Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b4d142d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
parents 6e3eed98 bae7eb33
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1218,6 +1218,7 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
}
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[] = {
	{ 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) },
@@ -1476,6 +1477,7 @@ static struct bus_type hid_bus_type = {
	.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[] = {
	{ HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) },
	{ 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_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_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_IBUDDY2) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
+2 −0
Original line number Diff line number Diff line
@@ -362,6 +362,8 @@
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD	0x0038
#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2	0x0036
#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_DEVICE_ID_RARITAN_KVM_DONGLE	0xcdab
+4 −9
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@
#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'
 */
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);

	if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 &&
			rdesc[286] == 0x2a && rdesc[304] == 0x19 &&
			rdesc[306] == 0x29 && rdesc[352] == 0x1a &&
			rdesc[355] == 0x2a && rdesc[557] == 0x19 &&
	if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 &&
			rdesc[559] == 0x29) {
		dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
				"Model 1028 report descriptor\n");
		rdesc[284] = rdesc[304] = rdesc[557] = 0x35;
		rdesc[352] = 0x36;
		rdesc[286] = rdesc[355] = 0x46;
		rdesc[306] = rdesc[559] = 0x45;
		rdesc[557] = 0x35;
		rdesc[559] = 0x45;
	}
}

+1 −1
Original line number Diff line number Diff line
@@ -656,7 +656,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

	case HIDIOCGSTRING:
		mutex_lock(&hiddev->existancelock);
		if (!hiddev->exist)
		if (hiddev->exist)
			r = hiddev_ioctl_string(hiddev, cmd, user_arg);
		else
			r = -ENODEV;