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
This commit is contained in:
commit
9b4d142d52
|
@ -1218,6 +1218,7 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(hid_connect);
|
EXPORT_SYMBOL_GPL(hid_connect);
|
||||||
|
|
||||||
|
/* a list of devices for which there is a specialized driver on HID bus */
|
||||||
static const struct hid_device_id hid_blacklist[] = {
|
static const struct hid_device_id hid_blacklist[] = {
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
|
||||||
|
@ -1476,6 +1477,7 @@ static struct bus_type hid_bus_type = {
|
||||||
.uevent = hid_uevent,
|
.uevent = hid_uevent,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* a list of devices that shouldn't be handled by HID core at all */
|
||||||
static const struct hid_device_id hid_ignore_list[] = {
|
static const struct hid_device_id hid_ignore_list[] = {
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) },
|
{ 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[] = {
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
|
{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
|
||||||
|
|
|
@ -362,6 +362,8 @@
|
||||||
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038
|
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038
|
||||||
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036
|
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036
|
||||||
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034
|
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034
|
||||||
|
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4 0x0044
|
||||||
|
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5 0x0045
|
||||||
|
|
||||||
#define USB_VENDOR_ID_SUN 0x0430
|
#define USB_VENDOR_ID_SUN 0x0430
|
||||||
#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
|
#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#define MS_NOGET 0x10
|
#define MS_NOGET 0x10
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Microsoft Wireless Desktop Receiver (Model 1028) has several
|
* Microsoft Wireless Desktop Receiver (Model 1028) has
|
||||||
* 'Usage Min/Max' where it ought to have 'Physical Min/Max'
|
* 'Usage Min/Max' where it ought to have 'Physical Min/Max'
|
||||||
*/
|
*/
|
||||||
static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
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,
|
||||||
{
|
{
|
||||||
unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
|
unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
|
||||||
|
|
||||||
if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 &&
|
if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 &&
|
||||||
rdesc[286] == 0x2a && rdesc[304] == 0x19 &&
|
|
||||||
rdesc[306] == 0x29 && rdesc[352] == 0x1a &&
|
|
||||||
rdesc[355] == 0x2a && rdesc[557] == 0x19 &&
|
|
||||||
rdesc[559] == 0x29) {
|
rdesc[559] == 0x29) {
|
||||||
dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
|
dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
|
||||||
"Model 1028 report descriptor\n");
|
"Model 1028 report descriptor\n");
|
||||||
rdesc[284] = rdesc[304] = rdesc[557] = 0x35;
|
rdesc[557] = 0x35;
|
||||||
rdesc[352] = 0x36;
|
rdesc[559] = 0x45;
|
||||||
rdesc[286] = rdesc[355] = 0x46;
|
|
||||||
rdesc[306] = rdesc[559] = 0x45;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -656,7 +656,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
|
|
||||||
case HIDIOCGSTRING:
|
case HIDIOCGSTRING:
|
||||||
mutex_lock(&hiddev->existancelock);
|
mutex_lock(&hiddev->existancelock);
|
||||||
if (!hiddev->exist)
|
if (hiddev->exist)
|
||||||
r = hiddev_ioctl_string(hiddev, cmd, user_arg);
|
r = hiddev_ioctl_string(hiddev, cmd, user_arg);
|
||||||
else
|
else
|
||||||
r = -ENODEV;
|
r = -ENODEV;
|
||||||
|
|
Loading…
Reference in New Issue