123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- From e7b5643bfddd3ce80f4ade03a980da6b8979136d 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;
- }
|