diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-04 17:27:47 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-04 19:13:07 -0200 |
commit | 8303dc9952758ab3060a3ee9a19ecb6fec83c600 (patch) | |
tree | 58ba536cc1f167e71d38e1c9eab1a4c0e66bf4a3 /drivers/media/usb/em28xx/em28xx-input.c | |
parent | 8cd7085ff460ead3aba6174052a408f4ad52ac36 (diff) | |
download | lwn-8303dc9952758ab3060a3ee9a19ecb6fec83c600.tar.gz lwn-8303dc9952758ab3060a3ee9a19ecb6fec83c600.zip |
[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.c | 20 |
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: |