diff options
Diffstat (limited to 'drivers/media/video/cx231xx/cx231xx-input.c')
-rw-r--r-- | drivers/media/video/cx231xx/cx231xx-input.c | 11 |
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 @@ | |||
27 | static int get_key_isdbt(struct IR_i2c *ir, u32 *ir_key, | 27 | static 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 | ||
110 | void cx231xx_ir_exit(struct cx231xx *dev) | 114 | void 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 | } |