Lines Matching refs:rc_dev

24 	struct rc_dev			*rdev;
64 static void st_rc_send_lirc_timeout(struct rc_dev *rdev)
191 struct st_rc_device *rc_dev = platform_get_drvdata(pdev);
195 clk_disable_unprepare(rc_dev->sys_clock);
196 rc_unregister_device(rc_dev->rdev);
200 static int st_rc_open(struct rc_dev *rdev)
213 static void st_rc_close(struct rc_dev *rdev)
224 struct rc_dev *rdev;
227 struct st_rc_device *rc_dev;
231 rc_dev = devm_kzalloc(dev, sizeof(struct st_rc_device), GFP_KERNEL);
233 if (!rc_dev)
244 rc_dev->rxuhfmode = true;
246 rc_dev->rxuhfmode = false;
256 rc_dev->sys_clock = devm_clk_get(dev, NULL);
257 if (IS_ERR(rc_dev->sys_clock)) {
259 ret = PTR_ERR(rc_dev->sys_clock);
263 rc_dev->irq = platform_get_irq(pdev, 0);
264 if (rc_dev->irq < 0) {
265 ret = rc_dev->irq;
271 rc_dev->base = devm_ioremap_resource(dev, res);
272 if (IS_ERR(rc_dev->base)) {
273 ret = PTR_ERR(rc_dev->base);
277 if (rc_dev->rxuhfmode)
278 rc_dev->rx_base = rc_dev->base + 0x40;
280 rc_dev->rx_base = rc_dev->base;
282 rc_dev->rstc = reset_control_get_optional_exclusive(dev, NULL);
283 if (IS_ERR(rc_dev->rstc)) {
284 ret = PTR_ERR(rc_dev->rstc);
288 rc_dev->dev = dev;
289 platform_set_drvdata(pdev, rc_dev);
290 st_rc_hardware_init(rc_dev);
296 rdev->priv = rc_dev;
307 rc_dev->rdev = rdev;
308 if (devm_request_irq(dev, rc_dev->irq, st_rc_rx_interrupt,
309 0, IR_ST_NAME, rc_dev) < 0) {
310 dev_err(dev, "IRQ %d register failed\n", rc_dev->irq);
317 dev_pm_set_wake_irq(dev, rc_dev->irq);
325 dev_info(dev, "setup in %s mode\n", rc_dev->rxuhfmode ? "UHF" : "IR");
332 clk_disable_unprepare(rc_dev->sys_clock);
342 struct st_rc_device *rc_dev = dev_get_drvdata(dev);
345 if (!enable_irq_wake(rc_dev->irq))
346 rc_dev->irq_wake = 1;
351 writel(0x00, rc_dev->rx_base + IRB_RX_EN);
352 writel(0x00, rc_dev->rx_base + IRB_RX_INT_EN);
353 clk_disable_unprepare(rc_dev->sys_clock);
354 reset_control_assert(rc_dev->rstc);
362 struct st_rc_device *rc_dev = dev_get_drvdata(dev);
363 struct rc_dev *rdev = rc_dev->rdev;
365 if (rc_dev->irq_wake) {
366 disable_irq_wake(rc_dev->irq);
367 rc_dev->irq_wake = 0;
370 st_rc_hardware_init(rc_dev);
372 writel(IRB_RX_INTS, rc_dev->rx_base + IRB_RX_INT_EN);
373 writel(0x01, rc_dev->rx_base + IRB_RX_EN);