summaryrefslogtreecommitdiff
path: root/drivers/media/usb/em28xx/em28xx-input.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2013-01-04 17:27:47 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-01-04 19:13:07 -0200
commit8303dc9952758ab3060a3ee9a19ecb6fec83c600 (patch)
tree58ba536cc1f167e71d38e1c9eab1a4c0e66bf4a3 /drivers/media/usb/em28xx/em28xx-input.c
parent8cd7085ff460ead3aba6174052a408f4ad52ac36 (diff)
downloadlinux-8303dc9952758ab3060a3ee9a19ecb6fec83c600.tar.gz
linux-8303dc9952758ab3060a3ee9a19ecb6fec83c600.tar.xz
[media] em28xx: initialize button/I2C IR earlier
The em28xx-input is used by 3 different types of input devices: - devices with buttons (like cameras and grabber devices); - devices with I2C remotes; - em2860 or latter chips with RC support embedded. When the device has an I2C remote, all it needs to do is to call the proper I2C driver (ir-i2c-kbd), passing the proper data to it, and just leave the code. Also, button devices have its own init code that doesn't depend on having an IR or not (as a general rule, they don't have). So, move its init code to fix bugs introduced by earlier patches that prevent them to work. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/usb/em28xx/em28xx-input.c')
-rw-r--r--drivers/media/usb/em28xx/em28xx-input.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/media/usb/em28xx/em28xx-input.c b/drivers/media/usb/em28xx/em28xx-input.c
index 3598221378ac..2a1b3d277db1 100644
--- a/drivers/media/usb/em28xx/em28xx-input.c
+++ b/drivers/media/usb/em28xx/em28xx-input.c
@@ -590,6 +590,17 @@ static int em28xx_ir_init(struct em28xx *dev)
int err = -ENOMEM;
u64 rc_type;
+ if (dev->board.has_snapshot_button)
+ em28xx_register_snapshot_button(dev);
+
+ if (dev->board.has_ir_i2c) {
+ em28xx_register_i2c_ir(dev);
+#if defined(CONFIG_MODULES) && defined(MODULE)
+ request_module("ir-kbd-i2c");
+#endif
+ return 0;
+ }
+
if (dev->board.ir_codes == NULL) {
/* No remote control support */
em28xx_warn("Remote control support is not available for "
@@ -663,15 +674,6 @@ static int em28xx_ir_init(struct em28xx *dev)
if (err)
goto error;
- em28xx_register_i2c_ir(dev);
-
-#if defined(CONFIG_MODULES) && defined(MODULE)
- if (dev->board.has_ir_i2c)
- request_module("ir-kbd-i2c");
-#endif
- if (dev->board.has_snapshot_button)
- em28xx_register_snapshot_button(dev);
-
return 0;
error: