diff options
author | Hans de Goede <hdegoede@redhat.com> | 2017-11-26 10:40:10 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2017-12-01 03:58:35 -0500 |
commit | 762f948c97132967b8154f48909daf221d090777 (patch) | |
tree | 0759c3c2346b24b9f77b6f0ce55f355a3a2d3750 | |
parent | 19ca28271c9a361629eb06382a43f355249de7ea (diff) |
HID: asus: Add product-id for the T100TAF and T100HA keyboard docks
The T100TAF and T100HA keyboard docks have the same special keys and
custom protocol multitouch touchpad as the T100TA, but use a different
product id.
The T100TAF and T100HA both use the same product id, but the T100HA's
touchpad has a different coordinate range.
This commits adds supports for the new USB id and uses a dmi-check to
determine if we're dealing with the T100TAF or T100HA.
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=197849
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-asus.c | 24 | ||||
-rw-r--r-- | drivers/hid/hid-ids.h | 3 | ||||
-rw-r--r-- | drivers/hid/hid-quirks.c | 1 |
3 files changed, 24 insertions, 4 deletions
diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c index 1bb7b63b3150..6d2894b7d8e7 100644 --- a/drivers/hid/hid-asus.c +++ b/drivers/hid/hid-asus.c | |||
@@ -26,6 +26,7 @@ | |||
26 | * any later version. | 26 | * any later version. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <linux/dmi.h> | ||
29 | #include <linux/hid.h> | 30 | #include <linux/hid.h> |
30 | #include <linux/module.h> | 31 | #include <linux/module.h> |
31 | #include <linux/input/mt.h> | 32 | #include <linux/input/mt.h> |
@@ -119,6 +120,15 @@ static const struct asus_touchpad_info asus_t100ta_tp = { | |||
119 | .max_contacts = 5, | 120 | .max_contacts = 5, |
120 | }; | 121 | }; |
121 | 122 | ||
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 | |||
122 | static const struct asus_touchpad_info asus_t100chi_tp = { | 132 | static const struct asus_touchpad_info asus_t100chi_tp = { |
123 | .max_x = 2640, | 133 | .max_x = 2640, |
124 | .max_y = 1320, | 134 | .max_y = 1320, |
@@ -606,7 +616,14 @@ static int asus_probe(struct hid_device *hdev, const struct hid_device_id *id) | |||
606 | 616 | ||
607 | if (intf->altsetting->desc.bInterfaceNumber == T100_TPAD_INTF) { | 617 | if (intf->altsetting->desc.bInterfaceNumber == T100_TPAD_INTF) { |
608 | drvdata->quirks = QUIRK_SKIP_INPUT_MAPPING; | 618 | drvdata->quirks = QUIRK_SKIP_INPUT_MAPPING; |
609 | drvdata->tp = &asus_t100ta_tp; | 619 | /* |
620 | * The T100HA uses the same USB-ids as the T100TAF, | ||
621 | * but has different max_x / max_y values. | ||
622 | */ | ||
623 | if (dmi_match(DMI_PRODUCT_NAME, "T100HAN")) | ||
624 | drvdata->tp = &asus_t100ha_tp; | ||
625 | else | ||
626 | drvdata->tp = &asus_t100ta_tp; | ||
610 | } | 627 | } |
611 | } | 628 | } |
612 | 629 | ||
@@ -751,7 +768,10 @@ static const struct hid_device_id asus_devices[] = { | |||
751 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, | 768 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, |
752 | USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD }, | 769 | USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD }, |
753 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, | 770 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, |
754 | USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD), | 771 | USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD), |
772 | QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, | ||
773 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, | ||
774 | USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD), | ||
755 | QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, | 775 | QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, |
756 | { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) }, | 776 | { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) }, |
757 | { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) }, | 777 | { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) }, |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 5da3d6256d25..dc1db8558850 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h | |||
@@ -178,7 +178,8 @@ | |||
178 | #define USB_VENDOR_ID_ASUSTEK 0x0b05 | 178 | #define USB_VENDOR_ID_ASUSTEK 0x0b05 |
179 | #define USB_DEVICE_ID_ASUSTEK_LCM 0x1726 | 179 | #define USB_DEVICE_ID_ASUSTEK_LCM 0x1726 |
180 | #define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b | 180 | #define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b |
181 | #define USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD 0x17e0 | 181 | #define USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD 0x17e0 |
182 | #define USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD 0x1807 | ||
182 | #define USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD 0x8502 | 183 | #define USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD 0x8502 |
183 | #define USB_DEVICE_ID_ASUSTEK_T304_KEYBOARD 0x184a | 184 | #define USB_DEVICE_ID_ASUSTEK_T304_KEYBOARD 0x184a |
184 | #define USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD 0x8585 | 185 | #define USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD 0x8585 |
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index 015e0c10248b..1cf1e9a0d699 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c | |||
@@ -284,7 +284,6 @@ static const struct hid_device_id hid_have_special_driver[] = { | |||
284 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1) }, | 284 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1) }, |
285 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2) }, | 285 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2) }, |
286 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3) }, | 286 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3) }, |
287 | { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100_KEYBOARD) }, | ||
288 | { HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_ASUS_MD_5112) }, | 287 | { HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_ASUS_MD_5112) }, |
289 | { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) }, | 288 | { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) }, |
290 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD) }, | 289 | { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD) }, |