diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0560-Revert-HID-dragonrise-fix-HID-Descriptor-for-0x0006-.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.4/0560-Revert-HID-dragonrise-fix-HID-Descriptor-for-0x0006-.patch | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0560-Revert-HID-dragonrise-fix-HID-Descriptor-for-0x0006-.patch b/target/linux/brcm2708/patches-4.4/0560-Revert-HID-dragonrise-fix-HID-Descriptor-for-0x0006-.patch new file mode 100644 index 0000000000..cb2c6e2226 --- /dev/null +++ b/target/linux/brcm2708/patches-4.4/0560-Revert-HID-dragonrise-fix-HID-Descriptor-for-0x0006-.patch @@ -0,0 +1,99 @@ +From 067c44b3d4e3aabaf9e622621556556a607747a4 Mon Sep 17 00:00:00 2001 +From: Ioan-Adrian Ratiu <adi@adirat.com> +Date: Tue, 27 Sep 2016 21:41:37 +0300 +Subject: [PATCH] Revert "HID: dragonrise: fix HID Descriptor for 0x0006 PID" + +[ Upstream commit 1bcaa05ebee115213e34f1806cc6a4f7a6175a88 ] +This reverts commit 18339f59c3a6 ("HID: dragonrise: fix HID...") because it +breaks certain dragonrise 0079:0006 gamepads. While it may fix a breakage +caused by commit 79346d620e9d ("HID: input: force generic axis to be mapped +to their user space axis"), it is probable that the manufacturer released +different hardware with the same PID so this fix works for only a subset +and breaks the other gamepads sharing the PID. + +What is needed is another more generic solution which fixes 79346d620e9d +("HID: input: force generic axis ...") breakage for this controller: we +need to add an exception for this driver to make it keep the old behaviour +previous to the initial breakage (this is done in patch 2 of this series). + +Signed-off-by: Ioan-Adrian Ratiu <adi@adirat.com> +Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Signed-off-by: Jiri Kosina <jkosina@suse.cz> +--- + drivers/hid/hid-dr.c | 58 ---------------------------------------------------- + 1 file changed, 58 deletions(-) + +--- a/drivers/hid/hid-dr.c ++++ b/drivers/hid/hid-dr.c +@@ -234,58 +234,6 @@ static __u8 pid0011_rdesc_fixed[] = { + 0xC0 /* End Collection */ + }; + +-static __u8 pid0006_rdesc_fixed[] = { +- 0x05, 0x01, /* Usage Page (Generic Desktop) */ +- 0x09, 0x04, /* Usage (Joystick) */ +- 0xA1, 0x01, /* Collection (Application) */ +- 0xA1, 0x02, /* Collection (Logical) */ +- 0x75, 0x08, /* Report Size (8) */ +- 0x95, 0x05, /* Report Count (5) */ +- 0x15, 0x00, /* Logical Minimum (0) */ +- 0x26, 0xFF, 0x00, /* Logical Maximum (255) */ +- 0x35, 0x00, /* Physical Minimum (0) */ +- 0x46, 0xFF, 0x00, /* Physical Maximum (255) */ +- 0x09, 0x30, /* Usage (X) */ +- 0x09, 0x33, /* Usage (Ry) */ +- 0x09, 0x32, /* Usage (Z) */ +- 0x09, 0x31, /* Usage (Y) */ +- 0x09, 0x34, /* Usage (Ry) */ +- 0x81, 0x02, /* Input (Variable) */ +- 0x75, 0x04, /* Report Size (4) */ +- 0x95, 0x01, /* Report Count (1) */ +- 0x25, 0x07, /* Logical Maximum (7) */ +- 0x46, 0x3B, 0x01, /* Physical Maximum (315) */ +- 0x65, 0x14, /* Unit (Centimeter) */ +- 0x09, 0x39, /* Usage (Hat switch) */ +- 0x81, 0x42, /* Input (Variable) */ +- 0x65, 0x00, /* Unit (None) */ +- 0x75, 0x01, /* Report Size (1) */ +- 0x95, 0x0C, /* Report Count (12) */ +- 0x25, 0x01, /* Logical Maximum (1) */ +- 0x45, 0x01, /* Physical Maximum (1) */ +- 0x05, 0x09, /* Usage Page (Button) */ +- 0x19, 0x01, /* Usage Minimum (0x01) */ +- 0x29, 0x0C, /* Usage Maximum (0x0C) */ +- 0x81, 0x02, /* Input (Variable) */ +- 0x06, 0x00, 0xFF, /* Usage Page (Vendor Defined) */ +- 0x75, 0x01, /* Report Size (1) */ +- 0x95, 0x08, /* Report Count (8) */ +- 0x25, 0x01, /* Logical Maximum (1) */ +- 0x45, 0x01, /* Physical Maximum (1) */ +- 0x09, 0x01, /* Usage (0x01) */ +- 0x81, 0x02, /* Input (Variable) */ +- 0xC0, /* End Collection */ +- 0xA1, 0x02, /* Collection (Logical) */ +- 0x75, 0x08, /* Report Size (8) */ +- 0x95, 0x07, /* Report Count (7) */ +- 0x46, 0xFF, 0x00, /* Physical Maximum (255) */ +- 0x26, 0xFF, 0x00, /* Logical Maximum (255) */ +- 0x09, 0x02, /* Usage (0x02) */ +- 0x91, 0x02, /* Output (Variable) */ +- 0xC0, /* End Collection */ +- 0xC0 /* End Collection */ +-}; +- + static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc, + unsigned int *rsize) + { +@@ -296,12 +244,6 @@ static __u8 *dr_report_fixup(struct hid_ + *rsize = sizeof(pid0011_rdesc_fixed); + } + break; +- case 0x0006: +- if (*rsize == sizeof(pid0006_rdesc_fixed)) { +- rdesc = pid0006_rdesc_fixed; +- *rsize = sizeof(pid0006_rdesc_fixed); +- } +- break; + } + return rdesc; + } |