aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-apple.c2
-rw-r--r--drivers/hid/hid-core.c4
-rw-r--r--drivers/hid/hid-ids.h6
-rw-r--r--drivers/hid/hid-lg.c2
-rw-r--r--drivers/hid/hidraw.c12
-rw-r--r--drivers/hid/usbhid/hid-core.c4
-rw-r--r--drivers/hid/usbhid/hid-quirks.c3
7 files changed, 26 insertions, 7 deletions
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index 7359d9d88e46..acbce5745b0c 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -151,7 +151,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
151 if (fnmode) { 151 if (fnmode) {
152 int do_translate; 152 int do_translate;
153 153
154 trans = apple_find_translation((hid->product < 0x220 || 154 trans = apple_find_translation((hid->product < 0x21d ||
155 hid->product >= 0x300) ? 155 hid->product >= 0x300) ?
156 powerbook_fn_keys : apple_fn_keys, 156 powerbook_fn_keys : apple_fn_keys,
157 usage->code); 157 usage->code);
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 5746a5903bce..8551693d645f 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1293,6 +1293,7 @@ static const struct hid_device_id hid_blacklist[] = {
1293 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) }, 1293 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) },
1294 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL) }, 1294 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL) },
1295 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2) }, 1295 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2) },
1296 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL) },
1296 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) }, 1297 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) },
1297 { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) }, 1298 { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) },
1298 { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K) }, 1299 { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K) },
@@ -1824,6 +1825,9 @@ int hid_check_keys_pressed(struct hid_device *hid)
1824 struct hid_input *hidinput; 1825 struct hid_input *hidinput;
1825 int i; 1826 int i;
1826 1827
1828 if (!(hid->claimed & HID_CLAIMED_INPUT))
1829 return 0;
1830
1827 list_for_each_entry(hidinput, &hid->inputs, list) { 1831 list_for_each_entry(hidinput, &hid->inputs, list) {
1828 for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++) 1832 for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++)
1829 if (hidinput->input->key[i]) 1833 if (hidinput->input->key[i])
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index bdeda4c7cc13..4d5ee2bbc62b 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -113,6 +113,11 @@
113#define USB_VENDOR_ID_BERKSHIRE 0x0c98 113#define USB_VENDOR_ID_BERKSHIRE 0x0c98
114#define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140 114#define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140
115 115
116#define USB_VENDOR_ID_CH 0x068e
117#define USB_DEVICE_ID_CH_PRO_PEDALS 0x00f2
118#define USB_DEVICE_ID_CH_COMBATSTICK 0x00f4
119#define USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE 0x00ff
120
116#define USB_VENDOR_ID_CHERRY 0x046a 121#define USB_VENDOR_ID_CHERRY 0x046a
117#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 122#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023
118 123
@@ -292,6 +297,7 @@
292#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286 297#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
293#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 298#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
294#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295 299#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295
300#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299
295#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a 301#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a
296#define USB_DEVICE_ID_S510_RECEIVER 0xc50c 302#define USB_DEVICE_ID_S510_RECEIVER 0xc50c
297#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517 303#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index 7b80cb694982..7afbaa0efd18 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -297,6 +297,8 @@ static const struct hid_device_id lg_devices[] = {
297 .driver_data = LG_FF }, 297 .driver_data = LG_FF },
298 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2), 298 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2),
299 .driver_data = LG_FF }, 299 .driver_data = LG_FF },
300 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL),
301 .driver_data = LG_FF },
300 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2), 302 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2),
301 .driver_data = LG_FF2 }, 303 .driver_data = LG_FF2 },
302 { } 304 { }
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index e263d4731179..00ccf4b1985d 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c
@@ -285,8 +285,10 @@ static long hidraw_ioctl(struct file *file, unsigned int cmd,
285 285
286 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWNAME(0))) { 286 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWNAME(0))) {
287 int len; 287 int len;
288 if (!hid->name) 288 if (!hid->name) {
289 return 0; 289 ret = 0;
290 break;
291 }
290 len = strlen(hid->name) + 1; 292 len = strlen(hid->name) + 1;
291 if (len > _IOC_SIZE(cmd)) 293 if (len > _IOC_SIZE(cmd))
292 len = _IOC_SIZE(cmd); 294 len = _IOC_SIZE(cmd);
@@ -297,8 +299,10 @@ static long hidraw_ioctl(struct file *file, unsigned int cmd,
297 299
298 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWPHYS(0))) { 300 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWPHYS(0))) {
299 int len; 301 int len;
300 if (!hid->phys) 302 if (!hid->phys) {
301 return 0; 303 ret = 0;
304 break;
305 }
302 len = strlen(hid->phys) + 1; 306 len = strlen(hid->phys) + 1;
303 if (len > _IOC_SIZE(cmd)) 307 if (len > _IOC_SIZE(cmd))
304 len = _IOC_SIZE(cmd); 308 len = _IOC_SIZE(cmd);
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 4306cb1b8ce5..ac8049b5f1e9 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -662,8 +662,8 @@ void usbhid_close(struct hid_device *hid)
662 spin_lock_irq(&usbhid->lock); 662 spin_lock_irq(&usbhid->lock);
663 if (!--hid->open) { 663 if (!--hid->open) {
664 spin_unlock_irq(&usbhid->lock); 664 spin_unlock_irq(&usbhid->lock);
665 hid_cancel_delayed_stuff(usbhid);
665 usb_kill_urb(usbhid->urbin); 666 usb_kill_urb(usbhid->urbin);
666 flush_scheduled_work();
667 usbhid->intf->needs_remote_wakeup = 0; 667 usbhid->intf->needs_remote_wakeup = 0;
668 } else { 668 } else {
669 spin_unlock_irq(&usbhid->lock); 669 spin_unlock_irq(&usbhid->lock);
@@ -898,7 +898,7 @@ static int usbhid_parse(struct hid_device *hid)
898 goto err; 898 goto err;
899 } 899 }
900 900
901 hid->quirks = quirks; 901 hid->quirks |= quirks;
902 902
903 return 0; 903 return 0;
904err: 904err:
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index 4391717d2519..d8f7423f363e 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -50,6 +50,9 @@ static const struct hid_blacklist {
50 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, 50 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET },
51 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, 51 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET },
52 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, 52 { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET },
53 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK, HID_QUIRK_NOGET },
54 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE, HID_QUIRK_NOGET },
55 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS, HID_QUIRK_NOGET },
53 { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, 56 { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET },
54 { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, 57 { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
55 { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, 58 { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },