Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
Pull HID fixes from Jiri Kosina: - fix a small bug in computation of report size, which might cause some devices (Atmel touchpad found on the Samsung Ativ 9) to reject reports with otherwise valid contents - a few device-ID specific quirks/additions piggy-backing on top of it * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: HID: sensor-hub: Add in quirk for sensor hub in Lenovo Ideapad Yogas HID: add NO_INIT_REPORTS quirk for Synaptics Touch Pad V 103S HID: core: fix computation of the report size HID: multitouch: add support of EliteGroup 05D8 panels
This commit is contained in:
commit
7ceeff443b
|
@ -1253,7 +1253,8 @@ EXPORT_SYMBOL_GPL(hid_output_report);
|
||||||
|
|
||||||
static int hid_report_len(struct hid_report *report)
|
static int hid_report_len(struct hid_report *report)
|
||||||
{
|
{
|
||||||
return ((report->size - 1) >> 3) + 1 + (report->id > 0) + 7;
|
/* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */
|
||||||
|
return ((report->size - 1) >> 3) + 1 + (report->id > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1266,7 +1267,7 @@ u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags)
|
||||||
* of implement() working on 8 byte chunks
|
* of implement() working on 8 byte chunks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int len = hid_report_len(report);
|
int len = hid_report_len(report) + 7;
|
||||||
|
|
||||||
return kmalloc(len, flags);
|
return kmalloc(len, flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -301,6 +301,9 @@
|
||||||
|
|
||||||
#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
|
#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
|
||||||
|
|
||||||
|
#define USB_VENDOR_ID_ELITEGROUP 0x03fc
|
||||||
|
#define USB_DEVICE_ID_ELITEGROUP_05D8 0x05d8
|
||||||
|
|
||||||
#define USB_VENDOR_ID_ELO 0x04E7
|
#define USB_VENDOR_ID_ELO 0x04E7
|
||||||
#define USB_DEVICE_ID_ELO_TS2515 0x0022
|
#define USB_DEVICE_ID_ELO_TS2515 0x0022
|
||||||
#define USB_DEVICE_ID_ELO_TS2700 0x0020
|
#define USB_DEVICE_ID_ELO_TS2700 0x0020
|
||||||
|
@ -834,6 +837,10 @@
|
||||||
#define USB_DEVICE_ID_SYNAPTICS_LTS2 0x1d10
|
#define USB_DEVICE_ID_SYNAPTICS_LTS2 0x1d10
|
||||||
#define USB_DEVICE_ID_SYNAPTICS_HD 0x0ac3
|
#define USB_DEVICE_ID_SYNAPTICS_HD 0x0ac3
|
||||||
#define USB_DEVICE_ID_SYNAPTICS_QUAD_HD 0x1ac3
|
#define USB_DEVICE_ID_SYNAPTICS_QUAD_HD 0x1ac3
|
||||||
|
#define USB_DEVICE_ID_SYNAPTICS_TP_V103 0x5710
|
||||||
|
|
||||||
|
#define USB_VENDOR_ID_TEXAS_INSTRUMENTS 0x2047
|
||||||
|
#define USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA 0x0855
|
||||||
|
|
||||||
#define USB_VENDOR_ID_THINGM 0x27b8
|
#define USB_VENDOR_ID_THINGM 0x27b8
|
||||||
#define USB_DEVICE_ID_BLINK1 0x01ed
|
#define USB_DEVICE_ID_BLINK1 0x01ed
|
||||||
|
|
|
@ -1155,6 +1155,11 @@ static const struct hid_device_id mt_devices[] = {
|
||||||
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
|
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
|
||||||
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
|
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
|
||||||
|
|
||||||
|
/* Elitegroup panel */
|
||||||
|
{ .driver_data = MT_CLS_SERIAL,
|
||||||
|
MT_USB_DEVICE(USB_VENDOR_ID_ELITEGROUP,
|
||||||
|
USB_DEVICE_ID_ELITEGROUP_05D8) },
|
||||||
|
|
||||||
/* Flatfrog Panels */
|
/* Flatfrog Panels */
|
||||||
{ .driver_data = MT_CLS_FLATFROG,
|
{ .driver_data = MT_CLS_FLATFROG,
|
||||||
MT_USB_DEVICE(USB_VENDOR_ID_FLATFROG,
|
MT_USB_DEVICE(USB_VENDOR_ID_FLATFROG,
|
||||||
|
|
|
@ -708,6 +708,9 @@ static const struct hid_device_id sensor_hub_devices[] = {
|
||||||
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0,
|
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0,
|
||||||
USB_DEVICE_ID_STM_HID_SENSOR),
|
USB_DEVICE_ID_STM_HID_SENSOR),
|
||||||
.driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
|
.driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
|
||||||
|
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_TEXAS_INSTRUMENTS,
|
||||||
|
USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA),
|
||||||
|
.driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
|
||||||
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, HID_ANY_ID,
|
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, HID_ANY_ID,
|
||||||
HID_ANY_ID) },
|
HID_ANY_ID) },
|
||||||
{ }
|
{ }
|
||||||
|
|
|
@ -119,6 +119,7 @@ static const struct hid_blacklist {
|
||||||
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2, HID_QUIRK_NO_INIT_REPORTS },
|
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2, HID_QUIRK_NO_INIT_REPORTS },
|
||||||
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD, HID_QUIRK_NO_INIT_REPORTS },
|
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD, HID_QUIRK_NO_INIT_REPORTS },
|
||||||
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS },
|
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS },
|
||||||
|
{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS },
|
||||||
|
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue