diff options
author | Ioan-Adrian Ratiu <adi@adirat.com> | 2016-09-27 14:41:37 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2016-10-10 04:52:01 -0400 |
commit | 1bcaa05ebee115213e34f1806cc6a4f7a6175a88 (patch) | |
tree | f6fcace76897e372999d536724f2542455ad9599 | |
parent | e15944099870f374ca7efc62f98cf23ba272ef43 (diff) |
Revert "HID: dragonrise: fix HID Descriptor for 0x0006 PID"
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>
-rw-r--r-- | drivers/hid/hid-dr.c | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/drivers/hid/hid-dr.c b/drivers/hid/hid-dr.c index 0ed843939b2c..818ea7d93533 100644 --- a/drivers/hid/hid-dr.c +++ b/drivers/hid/hid-dr.c | |||
@@ -234,58 +234,6 @@ static __u8 pid0011_rdesc_fixed[] = { | |||
234 | 0xC0 /* End Collection */ | 234 | 0xC0 /* End Collection */ |
235 | }; | 235 | }; |
236 | 236 | ||
237 | static __u8 pid0006_rdesc_fixed[] = { | ||
238 | 0x05, 0x01, /* Usage Page (Generic Desktop) */ | ||
239 | 0x09, 0x04, /* Usage (Joystick) */ | ||
240 | 0xA1, 0x01, /* Collection (Application) */ | ||
241 | 0xA1, 0x02, /* Collection (Logical) */ | ||
242 | 0x75, 0x08, /* Report Size (8) */ | ||
243 | 0x95, 0x05, /* Report Count (5) */ | ||
244 | 0x15, 0x00, /* Logical Minimum (0) */ | ||
245 | 0x26, 0xFF, 0x00, /* Logical Maximum (255) */ | ||
246 | 0x35, 0x00, /* Physical Minimum (0) */ | ||
247 | 0x46, 0xFF, 0x00, /* Physical Maximum (255) */ | ||
248 | 0x09, 0x30, /* Usage (X) */ | ||
249 | 0x09, 0x33, /* Usage (Ry) */ | ||
250 | 0x09, 0x32, /* Usage (Z) */ | ||
251 | 0x09, 0x31, /* Usage (Y) */ | ||
252 | 0x09, 0x34, /* Usage (Ry) */ | ||
253 | 0x81, 0x02, /* Input (Variable) */ | ||
254 | 0x75, 0x04, /* Report Size (4) */ | ||
255 | 0x95, 0x01, /* Report Count (1) */ | ||
256 | 0x25, 0x07, /* Logical Maximum (7) */ | ||
257 | 0x46, 0x3B, 0x01, /* Physical Maximum (315) */ | ||
258 | 0x65, 0x14, /* Unit (Centimeter) */ | ||
259 | 0x09, 0x39, /* Usage (Hat switch) */ | ||
260 | 0x81, 0x42, /* Input (Variable) */ | ||
261 | 0x65, 0x00, /* Unit (None) */ | ||
262 | 0x75, 0x01, /* Report Size (1) */ | ||
263 | 0x95, 0x0C, /* Report Count (12) */ | ||
264 | 0x25, 0x01, /* Logical Maximum (1) */ | ||
265 | 0x45, 0x01, /* Physical Maximum (1) */ | ||
266 | 0x05, 0x09, /* Usage Page (Button) */ | ||
267 | 0x19, 0x01, /* Usage Minimum (0x01) */ | ||
268 | 0x29, 0x0C, /* Usage Maximum (0x0C) */ | ||
269 | 0x81, 0x02, /* Input (Variable) */ | ||
270 | 0x06, 0x00, 0xFF, /* Usage Page (Vendor Defined) */ | ||
271 | 0x75, 0x01, /* Report Size (1) */ | ||
272 | 0x95, 0x08, /* Report Count (8) */ | ||
273 | 0x25, 0x01, /* Logical Maximum (1) */ | ||
274 | 0x45, 0x01, /* Physical Maximum (1) */ | ||
275 | 0x09, 0x01, /* Usage (0x01) */ | ||
276 | 0x81, 0x02, /* Input (Variable) */ | ||
277 | 0xC0, /* End Collection */ | ||
278 | 0xA1, 0x02, /* Collection (Logical) */ | ||
279 | 0x75, 0x08, /* Report Size (8) */ | ||
280 | 0x95, 0x07, /* Report Count (7) */ | ||
281 | 0x46, 0xFF, 0x00, /* Physical Maximum (255) */ | ||
282 | 0x26, 0xFF, 0x00, /* Logical Maximum (255) */ | ||
283 | 0x09, 0x02, /* Usage (0x02) */ | ||
284 | 0x91, 0x02, /* Output (Variable) */ | ||
285 | 0xC0, /* End Collection */ | ||
286 | 0xC0 /* End Collection */ | ||
287 | }; | ||
288 | |||
289 | static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc, | 237 | static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc, |
290 | unsigned int *rsize) | 238 | unsigned int *rsize) |
291 | { | 239 | { |
@@ -296,12 +244,6 @@ static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
296 | *rsize = sizeof(pid0011_rdesc_fixed); | 244 | *rsize = sizeof(pid0011_rdesc_fixed); |
297 | } | 245 | } |
298 | break; | 246 | break; |
299 | case 0x0006: | ||
300 | if (*rsize == sizeof(pid0006_rdesc_fixed)) { | ||
301 | rdesc = pid0006_rdesc_fixed; | ||
302 | *rsize = sizeof(pid0006_rdesc_fixed); | ||
303 | } | ||
304 | break; | ||
305 | } | 247 | } |
306 | return rdesc; | 248 | return rdesc; |
307 | } | 249 | } |