Skip to content

Commit 183b636

Browse files
committed
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
Pull HID updates from Jiri Kosina: - remove hid_have_special_driver[] entry hard requirement for any newly supported VID/PID by a specific non-core hid driver, and general related cleanup of HID matching core, from Benjamin Tissoires - support for new Wacom devices and a few small fixups for already supported ones in Wacom driver, from Aaron Armstrong Skomra and Jason Gerecke - sysfs interface fix for roccat driver from Dan Carpenter - support for new Asus HW (T100TAF, T100HA, T200TA) from Hans de Goede - improved support for Jabra devices, from Niels Skou Olsen - other assorted small fixes and new device IDs * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (30 commits) HID: quirks: Fix keyboard + touchpad on Toshiba Click Mini not working HID: roccat: prevent an out of bounds read in kovaplus_profile_activated() HID: asus: Fix special function keys on T200TA HID: asus: Add touchpad max x/y and resolution info for the T200TA HID: wacom: Add support for One by Wacom (CTL-472 / CTL-672) HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) events HID: intel-ish-hid: Enable Cannon Lake and Coffee Lake laptop/desktop HID: elecom: rewrite report fixup for EX-G and future mice HID: sony: Report DS4 version info through sysfs HID: sony: Print reversed MAC address via %pMR HID: wacom: EKR: ensure devres groups at higher indexes are released HID: rmi: Support the Fujitsu R726 Pad dock using hid-rmi HID: add quirk for another PIXART OEM mouse used by HP HID: quirks: make array hid_quirks static HID: hid-multitouch: support fine-grain orientation reporting HID: asus: Add product-id for the T100TAF and T100HA keyboard docks HID: elo: clear BTN_LEFT mapping HID: multitouch: Combine all left-button events in a frame HID: multitouch: Only look at non touch fields in first packet of a frame HID: multitouch: Properly deal with Win8 PTP reports with 0 touches ...
2 parents 4c6790c + c86aa01 commit 183b636

File tree

27 files changed

+1995
-1396
lines changed

27 files changed

+1995
-1396
lines changed

Documentation/devicetree/bindings/input/hid-over-i2c.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ device-specific compatible properties, which should be used in addition to the
3131

3232
- vdd-supply: phandle of the regulator that provides the supply voltage.
3333
- post-power-on-delay-ms: time required by the device after enabling its regulators
34-
before it is ready for communication. Must be used with 'vdd-supply'.
34+
or powering it on, before it is ready for communication.
3535

3636
Example:
3737

Documentation/input/multi-touch-protocol.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,11 @@ ABS_MT_ORIENTATION
269269
The orientation of the touching ellipse. The value should describe a signed
270270
quarter of a revolution clockwise around the touch center. The signed value
271271
range is arbitrary, but zero should be returned for an ellipse aligned with
272-
the Y axis of the surface, a negative value when the ellipse is turned to
273-
the left, and a positive value when the ellipse is turned to the
274-
right. When completely aligned with the X axis, the range max should be
275-
returned.
272+
the Y axis (north) of the surface, a negative value when the ellipse is
273+
turned to the left, and a positive value when the ellipse is turned to the
274+
right. When aligned with the X axis in the positive direction, the range
275+
max should be returned; when aligned with the X axis in the negative
276+
direction, the range -max should be returned.
276277

277278
Touch ellipsis are symmetrical by default. For devices capable of true 360
278279
degree orientation, the reported orientation must exceed the range max to

drivers/hid/Kconfig

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ config HID_ELECOM
280280
---help---
281281
Support for ELECOM devices:
282282
- BM084 Bluetooth Mouse
283+
- EX-G Trackball (Wired and wireless)
283284
- DEFT Trackball (Wired and wireless)
284285
- HUGE Trackball (Wired and wireless)
285286

@@ -396,6 +397,17 @@ config HID_ITE
396397
---help---
397398
Support for ITE devices not fully compliant with HID standard.
398399

400+
config HID_JABRA
401+
tristate "Jabra USB HID Driver"
402+
depends on HID
403+
---help---
404+
Support for Jabra USB HID devices.
405+
406+
Prevents mapping of vendor defined HID usages to input events. Without
407+
this driver HID reports from Jabra devices may incorrectly be seen as
408+
mouse button events.
409+
Say M here if you may ever plug in a Jabra USB device.
410+
399411
config HID_TWINHAN
400412
tristate "Twinhan IR remote control"
401413
depends on HID

drivers/hid/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# Makefile for the HID driver
44
#
5-
hid-y := hid-core.o hid-input.o
5+
hid-y := hid-core.o hid-input.o hid-quirks.o
66
hid-$(CONFIG_DEBUG_FS) += hid-debug.o
77

88
obj-$(CONFIG_HID) += hid.o
@@ -52,6 +52,7 @@ obj-$(CONFIG_HID_HOLTEK) += hid-holtekff.o
5252
obj-$(CONFIG_HID_HYPERV_MOUSE) += hid-hyperv.o
5353
obj-$(CONFIG_HID_ICADE) += hid-icade.o
5454
obj-$(CONFIG_HID_ITE) += hid-ite.o
55+
obj-$(CONFIG_HID_JABRA) += hid-jabra.o
5556
obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.o
5657
obj-$(CONFIG_HID_KEYTOUCH) += hid-keytouch.o
5758
obj-$(CONFIG_HID_KYE) += hid-kye.o

drivers/hid/hid-asus.c

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
* any later version.
2727
*/
2828

29+
#include <linux/dmi.h>
2930
#include <linux/hid.h>
3031
#include <linux/module.h>
3132
#include <linux/input/mt.h>
@@ -119,6 +120,24 @@ static const struct asus_touchpad_info asus_t100ta_tp = {
119120
.max_contacts = 5,
120121
};
121122

123+
static const struct asus_touchpad_info asus_t100ha_tp = {
124+
.max_x = 2640,
125+
.max_y = 1320,
126+
.res_x = 30, /* units/mm */
127+
.res_y = 29, /* units/mm */
128+
.contact_size = 5,
129+
.max_contacts = 5,
130+
};
131+
132+
static const struct asus_touchpad_info asus_t200ta_tp = {
133+
.max_x = 3120,
134+
.max_y = 1716,
135+
.res_x = 30, /* units/mm */
136+
.res_y = 28, /* units/mm */
137+
.contact_size = 5,
138+
.max_contacts = 5,
139+
};
140+
122141
static const struct asus_touchpad_info asus_t100chi_tp = {
123142
.max_x = 2640,
124143
.max_y = 1320,
@@ -606,7 +625,17 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id)
606625

607626
if (intf->altsetting->desc.bInterfaceNumber == T100_TPAD_INTF) {
608627
drvdata->quirks = QUIRK_SKIP_INPUT_MAPPING;
609-
drvdata->tp = &asus_t100ta_tp;
628+
/*
629+
* The T100HA uses the same USB-ids as the T100TAF and
630+
* the T200TA uses the same USB-ids as the T100TA, while
631+
* both have different max x/y values as the T100TA[F].
632+
*/
633+
if (dmi_match(DMI_PRODUCT_NAME, "T100HAN"))
634+
drvdata->tp = &asus_t100ha_tp;
635+
else if (dmi_match(DMI_PRODUCT_NAME, "T200TA"))
636+
drvdata->tp = &asus_t200ta_tp;
637+
else
638+
drvdata->tp = &asus_t100ta_tp;
610639
}
611640
}
612641

@@ -686,9 +715,10 @@ static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,
686715
hid_info(hdev, "Fixing up Asus notebook report descriptor\n");
687716
rdesc[55] = 0xdd;
688717
}
689-
/* For the T100TA keyboard dock */
718+
/* For the T100TA/T200TA keyboard dock */
690719
if (drvdata->quirks & QUIRK_T100_KEYBOARD &&
691-
*rsize == 76 && rdesc[73] == 0x81 && rdesc[74] == 0x01) {
720+
(*rsize == 76 || *rsize == 101) &&
721+
rdesc[73] == 0x81 && rdesc[74] == 0x01) {
692722
hid_info(hdev, "Fixing up Asus T100 keyb report descriptor\n");
693723
rdesc[74] &= ~HID_MAIN_ITEM_CONSTANT;
694724
}
@@ -751,7 +781,10 @@ static const struct hid_device_id asus_devices[] = {
751781
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
752782
USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD },
753783
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
754-
USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD),
784+
USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD),
785+
QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES },
786+
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK,
787+
USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD),
755788
QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES },
756789
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) },
757790
{ HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) },

0 commit comments

Comments
 (0)