@@ -234,6 +234,58 @@ static __u8 pid0011_rdesc_fixed[] = {
234234 0xC0 /* End Collection */
235235};
236236
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+
237289static __u8 * dr_report_fixup (struct hid_device * hdev , __u8 * rdesc ,
238290 unsigned int * rsize )
239291{
@@ -244,6 +296,12 @@ static __u8 *dr_report_fixup(struct hid_device *hdev, __u8 *rdesc,
244296 * rsize = sizeof (pid0011_rdesc_fixed );
245297 }
246298 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 ;
247305 }
248306 return rdesc ;
249307}
0 commit comments