aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx231xx/cx231xx-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/cx231xx/cx231xx-input.c')
-rw-r--r--drivers/media/video/cx231xx/cx231xx-input.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/media/video/cx231xx/cx231xx-input.c b/drivers/media/video/cx231xx/cx231xx-input.c
index 45e14cac462..96176e9db5a 100644
--- a/drivers/media/video/cx231xx/cx231xx-input.c
+++ b/drivers/media/video/cx231xx/cx231xx-input.c
@@ -27,12 +27,16 @@
27static int get_key_isdbt(struct IR_i2c *ir, u32 *ir_key, 27static int get_key_isdbt(struct IR_i2c *ir, u32 *ir_key,
28 u32 *ir_raw) 28 u32 *ir_raw)
29{ 29{
30 int rc;
30 u8 cmd, scancode; 31 u8 cmd, scancode;
31 32
32 dev_dbg(&ir->rc->input_dev->dev, "%s\n", __func__); 33 dev_dbg(&ir->rc->input_dev->dev, "%s\n", __func__);
33 34
34 /* poll IR chip */ 35 /* poll IR chip */
35 if (1 != i2c_master_recv(ir->c, &cmd, 1)) 36 rc = i2c_master_recv(ir->c, &cmd, 1);
37 if (rc < 0)
38 return rc;
39 if (rc != 1)
36 return -EIO; 40 return -EIO;
37 41
38 /* it seems that 0xFE indicates that a button is still hold 42 /* it seems that 0xFE indicates that a button is still hold
@@ -102,11 +106,14 @@ int cx231xx_ir_init(struct cx231xx *dev)
102 ir_i2c_bus = cx231xx_boards[dev->model].ir_i2c_master; 106 ir_i2c_bus = cx231xx_boards[dev->model].ir_i2c_master;
103 dev_dbg(&dev->udev->dev, "Trying to bind ir at bus %d, addr 0x%02x\n", 107 dev_dbg(&dev->udev->dev, "Trying to bind ir at bus %d, addr 0x%02x\n",
104 ir_i2c_bus, info.addr); 108 ir_i2c_bus, info.addr);
105 i2c_new_device(&dev->i2c_bus[ir_i2c_bus].i2c_adap, &info); 109 dev->ir_i2c_client = i2c_new_device(&dev->i2c_bus[ir_i2c_bus].i2c_adap, &info);
106 110
107 return 0; 111 return 0;
108} 112}
109 113
110void cx231xx_ir_exit(struct cx231xx *dev) 114void cx231xx_ir_exit(struct cx231xx *dev)
111{ 115{
116 if (dev->ir_i2c_client)
117 i2c_unregister_device(dev->ir_i2c_client);
118 dev->ir_i2c_client = NULL;
112} 119}