V4L/DVB (12600): dvb-usb-remote: return KEY_RESERVED if there's free space for new...
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 30 Aug 2009 01:03:47 +0000 (22:03 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 12 Sep 2009 15:19:49 +0000 (12:19 -0300)
The input subsystem checks if get_keycode works for a scan code. Due to that,
we need to return a valid value when there's some space at the table that
can be used by a scancode.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/dvb-usb-remote.c

index b6dbc2b..edde87c 100644 (file)
@@ -22,6 +22,19 @@ static int dvb_usb_getkeycode(struct input_dev *dev,
                        *keycode = keymap[i].event;
                        return 0;
                }
+
+       /*
+        * If is there extra space, returns KEY_RESERVED,
+        * otherwise, input core won't let dvb_usb_setkeycode
+        * to work
+        */
+       for (i = 0; i < d->props.rc_key_map_size; i++)
+               if (keymap[i].event == KEY_RESERVED ||
+                   keymap[i].event == KEY_UNKNOWN) {
+                       *keycode = KEY_RESERVED;
+                       return 0;
+               }
+
        return -EINVAL;
 }