diff options
-rw-r--r-- | drivers/hid/hid-core.c | 4 | ||||
-rw-r--r-- | drivers/hid/hid-ids.h | 2 | ||||
-rw-r--r-- | drivers/hid/hid-microsoft.c | 13 | ||||
-rw-r--r-- | drivers/hid/usbhid/hiddev.c | 2 |
4 files changed, 11 insertions, 10 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 5d7640e49dc5..6cad69ed21c5 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -1218,6 +1218,7 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask) | |||
1218 | } | 1218 | } |
1219 | EXPORT_SYMBOL_GPL(hid_connect); | 1219 | EXPORT_SYMBOL_GPL(hid_connect); |
1220 | 1220 | ||
1221 | /* a list of devices for which there is a specialized driver on HID bus */ | ||
1221 | static const struct hid_device_id hid_blacklist[] = { | 1222 | static const struct hid_device_id hid_blacklist[] = { |
1222 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, | 1223 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, |
1223 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, | 1224 | { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, |
@@ -1476,6 +1477,7 @@ static struct bus_type hid_bus_type = { | |||
1476 | .uevent = hid_uevent, | 1477 | .uevent = hid_uevent, |
1477 | }; | 1478 | }; |
1478 | 1479 | ||
1480 | /* a list of devices that shouldn't be handled by HID core at all */ | ||
1479 | static const struct hid_device_id hid_ignore_list[] = { | 1481 | static const struct hid_device_id hid_ignore_list[] = { |
1480 | { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) }, | 1482 | { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) }, |
1481 | { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) }, | 1483 | { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) }, |
@@ -1606,6 +1608,8 @@ static const struct hid_device_id hid_ignore_list[] = { | |||
1606 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) }, | 1608 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) }, |
1607 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) }, | 1609 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) }, |
1608 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) }, | 1610 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) }, |
1611 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) }, | ||
1612 | { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) }, | ||
1609 | { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) }, | 1613 | { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) }, |
1610 | { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) }, | 1614 | { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) }, |
1611 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, | 1615 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index acc1abc834a4..e899f510ebeb 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h | |||
@@ -362,6 +362,8 @@ | |||
362 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038 | 362 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038 |
363 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036 | 363 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036 |
364 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034 | 364 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034 |
365 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4 0x0044 | ||
366 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5 0x0045 | ||
365 | 367 | ||
366 | #define USB_VENDOR_ID_SUN 0x0430 | 368 | #define USB_VENDOR_ID_SUN 0x0430 |
367 | #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab | 369 | #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab |
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c index d718b1607d0f..25b10dcad90d 100644 --- a/drivers/hid/hid-microsoft.c +++ b/drivers/hid/hid-microsoft.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #define MS_NOGET 0x10 | 30 | #define MS_NOGET 0x10 |
31 | 31 | ||
32 | /* | 32 | /* |
33 | * Microsoft Wireless Desktop Receiver (Model 1028) has several | 33 | * Microsoft Wireless Desktop Receiver (Model 1028) has |
34 | * 'Usage Min/Max' where it ought to have 'Physical Min/Max' | 34 | * 'Usage Min/Max' where it ought to have 'Physical Min/Max' |
35 | */ | 35 | */ |
36 | static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, | 36 | static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, |
@@ -38,17 +38,12 @@ static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
38 | { | 38 | { |
39 | unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); | 39 | unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); |
40 | 40 | ||
41 | if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 && | 41 | if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 && |
42 | rdesc[286] == 0x2a && rdesc[304] == 0x19 && | ||
43 | rdesc[306] == 0x29 && rdesc[352] == 0x1a && | ||
44 | rdesc[355] == 0x2a && rdesc[557] == 0x19 && | ||
45 | rdesc[559] == 0x29) { | 42 | rdesc[559] == 0x29) { |
46 | dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver " | 43 | dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver " |
47 | "Model 1028 report descriptor\n"); | 44 | "Model 1028 report descriptor\n"); |
48 | rdesc[284] = rdesc[304] = rdesc[557] = 0x35; | 45 | rdesc[557] = 0x35; |
49 | rdesc[352] = 0x36; | 46 | rdesc[559] = 0x45; |
50 | rdesc[286] = rdesc[355] = 0x46; | ||
51 | rdesc[306] = rdesc[559] = 0x45; | ||
52 | } | 47 | } |
53 | } | 48 | } |
54 | 49 | ||
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index d73eea382ab3..4940e4d70c2d 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c | |||
@@ -656,7 +656,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
656 | 656 | ||
657 | case HIDIOCGSTRING: | 657 | case HIDIOCGSTRING: |
658 | mutex_lock(&hiddev->existancelock); | 658 | mutex_lock(&hiddev->existancelock); |
659 | if (!hiddev->exist) | 659 | if (hiddev->exist) |
660 | r = hiddev_ioctl_string(hiddev, cmd, user_arg); | 660 | r = hiddev_ioctl_string(hiddev, cmd, user_arg); |
661 | else | 661 | else |
662 | r = -ENODEV; | 662 | r = -ENODEV; |