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

Commit 0fb21de0 authored by Jiri Kosina's avatar Jiri Kosina
Browse files

HID: adjust report descriptor fixup for MS 1028 receiver



Report descriptor fixup for MS 1028 receiver changes also values for
Keyboard and Consumer, which incorrectly trims the range, causing correct
events being thrown away before passing to userspace.

We need to keep the GenDesk usage fixup though, as it reports totally bogus
values about axis.

Reported-by: default avatarLucas Gadani <lgadani@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 18e352e4
Loading
Loading
Loading
Loading
+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;
	}
}