HID: adjust report descriptor fixup for MS 1028 receiver
authorJiri Kosina <jkosina@suse.cz>
Tue, 10 Feb 2009 22:00:34 +0000 (17:00 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 17 Feb 2009 17:46:28 +0000 (09:46 -0800)
commit 0fb21de0799a985d2da3da14ae5625d724256638 upstream

HID: adjust report descriptor fixup for MS 1028 receiver
[Backport to 2.6.27: cebbert@redhat.com]

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: Lucas Gadani <lgadani@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/hid/usbhid/hid-quirks.c

index e87956af1a94d047cda2ac4a16061011125a672c..1371184a62af4ee37849e12d03d605ee9846ed96 100644 (file)
@@ -1130,24 +1130,16 @@ static void usbhid_fixup_button_consumer_descriptor(unsigned char *rdesc, int rs
 }
 
 /*
- * 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 usbhid_fixup_microsoft_descriptor(unsigned char *rdesc, int rsize)
 {
-       if (rsize == 571 && rdesc[284] == 0x19
-                        && rdesc[286] == 0x2a
-                        && rdesc[304] == 0x19
-                        && rdesc[306] == 0x29
-                        && rdesc[352] == 0x1a
-                        && rdesc[355] == 0x2a
-                        && rdesc[557] == 0x19
+       if (rsize == 571 && rdesc[557] == 0x19
                         && rdesc[559] == 0x29) {
                printk(KERN_INFO "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;
        }
 }