diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-29 21:11:02 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-29 21:11:02 -0500 |
| commit | 9b4d142d521963ee1c53cefcd1f9790ca32b5db7 (patch) | |
| tree | 2f302aa25a5b1209932335110f9e5138dd95d824 | |
| parent | 6e3eed9850064e38a98851ff91534bb32438b292 (diff) | |
| parent | bae7eb33b25387fdc7ccae08768bef1f9484a5b0 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
HID: document difference between hid_blacklist and hid_ignore_list
HID: add antec-branded soundgraph imon devices to blacklist
HID: fix reversed logic in disconnect testing of hiddev
HID: adjust report descriptor fixup for MS 1028 receiver
| -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; |
