Commit cf5425bfcd6909f9831a00bc06ccb9a5b163766a

Authored by Linus Torvalds

Merge branch 'for-3.8/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid

PullHID fixes from Jiri Kosina:

 - fix i2c-hid and hidraw interaction, by Benjamin Tissoires

 - a quirk to make a particular device (Formosa IR receiver) work
   properly, by Nicholas Santos

* 'for-3.8/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: i2c-hid: fix i2c_hid_output_raw_report
  HID: usbhid: quirk for Formosa IR receiver
  HID: remove x bit from sensor doc

Showing 3 changed files Side-by-side Diff

drivers/hid/hid-ids.h
... ... @@ -306,6 +306,9 @@
306 306 #define USB_VENDOR_ID_EZKEY 0x0518
307 307 #define USB_DEVICE_ID_BTC_8193 0x0002
308 308  
  309 +#define USB_VENDOR_ID_FORMOSA 0x147a
  310 +#define USB_DEVICE_ID_FORMOSA_IR_RECEIVER 0xe03e
  311 +
309 312 #define USB_VENDOR_ID_FREESCALE 0x15A2
310 313 #define USB_DEVICE_ID_FREESCALE_MX28 0x004F
311 314  
drivers/hid/i2c-hid/i2c-hid.c
... ... @@ -540,13 +540,24 @@
540 540 {
541 541 struct i2c_client *client = hid->driver_data;
542 542 int report_id = buf[0];
  543 + int ret;
543 544  
544 545 if (report_type == HID_INPUT_REPORT)
545 546 return -EINVAL;
546 547  
547   - return i2c_hid_set_report(client,
  548 + if (report_id) {
  549 + buf++;
  550 + count--;
  551 + }
  552 +
  553 + ret = i2c_hid_set_report(client,
548 554 report_type == HID_FEATURE_REPORT ? 0x03 : 0x02,
549 555 report_id, buf, count);
  556 +
  557 + if (report_id && ret >= 0)
  558 + ret++; /* add report_id to the number of transfered bytes */
  559 +
  560 + return ret;
550 561 }
551 562  
552 563 static int i2c_hid_parse(struct hid_device *hid)
drivers/hid/usbhid/hid-quirks.c
... ... @@ -70,6 +70,7 @@
70 70 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET },
71 71 { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET },
72 72 { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
  73 + { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS },
73 74 { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET },
74 75 { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
75 76 { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS },