]> Pileus Git - ~andy/linux/commitdiff
HID: LG: Fix detection of Logitech Speed Force Wireless (WiiWheel)
authorSimon Wood <simon@mungewell.org>
Wed, 20 Feb 2013 03:25:11 +0000 (20:25 -0700)
committerJiri Kosina <jkosina@suse.cz>
Wed, 20 Feb 2013 09:19:10 +0000 (10:19 +0100)
Previously 'LG4FF' was only used for the WiiWheel, however it is now used
for all the Logitech Wheels. This patch corrects the detection mechanism
for the patching the report descriptor to ensure only the WiiWheel will
be patched.

Signed-off-by: Simon Wood <simon@mungewell.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-lg.c

index 160c489190813573aa8a5c3bde10d7eda36d9139..c06559803fd86f1d9280ebcbdc9e51607f4e0c6e 100644 (file)
@@ -242,15 +242,6 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                         "fixing up rel/abs in Logitech report descriptor\n");
                rdesc[33] = rdesc[50] = 0x02;
        }
-       if ((drv_data->quirks & LG_FF4) && *rsize >= 101 &&
-                       rdesc[41] == 0x95 && rdesc[42] == 0x0B &&
-                       rdesc[47] == 0x05 && rdesc[48] == 0x09) {
-               hid_info(hdev, "fixing up Logitech Speed Force Wireless button descriptor\n");
-               rdesc[41] = 0x05;
-               rdesc[42] = 0x09;
-               rdesc[47] = 0x95;
-               rdesc[48] = 0x0B;
-       }
 
        switch (hdev->product) {
 
@@ -292,6 +283,17 @@ static __u8 *lg_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                        *rsize = sizeof(dfp_rdesc_fixed);
                }
                break;
+
+       case USB_DEVICE_ID_LOGITECH_WII_WHEEL:
+               if (*rsize >= 101 && rdesc[41] == 0x95 && rdesc[42] == 0x0B &&
+                               rdesc[47] == 0x05 && rdesc[48] == 0x09) {
+                       hid_info(hdev, "fixing up Logitech Speed Force Wireless report descriptor\n");
+                       rdesc[41] = 0x05;
+                       rdesc[42] = 0x09;
+                       rdesc[47] = 0x95;
+                       rdesc[48] = 0x0B;
+               }
+               break;
        }
 
        return rdesc;