aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-11-26 10:40:10 -0500
committerJiri Kosina <jkosina@suse.cz>2017-12-01 03:58:35 -0500
commit762f948c97132967b8154f48909daf221d090777 (patch)
tree0759c3c2346b24b9f77b6f0ce55f355a3a2d3750
parent19ca28271c9a361629eb06382a43f355249de7ea (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.c24
-rw-r--r--drivers/hid/hid-ids.h3
-rw-r--r--drivers/hid/hid-quirks.c1
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
123static 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
122static const struct asus_touchpad_info asus_t100chi_tp = { 132static 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) },