154 lines
7.3 KiB
Diff
154 lines
7.3 KiB
Diff
From d13e067cecbdb0bebe7bf5f1afcb9a563891e973 Mon Sep 17 00:00:00 2001
|
|
From: Jake Day <jake@ninebysix.com>
|
|
Date: Thu, 1 Feb 2018 19:24:33 -0500
|
|
Subject: support for surface keyboards and covers
|
|
|
|
|
|
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
|
index 330ca98..fd75182 100644
|
|
--- a/drivers/hid/hid-core.c
|
|
+++ b/drivers/hid/hid-core.c
|
|
@@ -723,7 +723,8 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
|
|
hid->group = HID_GROUP_SENSOR_HUB;
|
|
|
|
if (hid->vendor == USB_VENDOR_ID_MICROSOFT &&
|
|
- hid->product == USB_DEVICE_ID_MS_POWER_COVER &&
|
|
+ (hid->product == USB_DEVICE_ID_MS_SURFACE_LAPTOP ||
|
|
+ hid->product == USB_DEVICE_ID_MS_POWER_COVER) &&
|
|
hid->group == HID_GROUP_MULTITOUCH)
|
|
hid->group = HID_GROUP_GENERIC;
|
|
|
|
@@ -2179,6 +2180,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
|
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_LAPTOP) },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) },
|
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
|
|
#endif
|
|
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
index be2e005..ebb9688 100644
|
|
--- a/drivers/hid/hid-ids.h
|
|
+++ b/drivers/hid/hid-ids.h
|
|
@@ -757,11 +757,21 @@
|
|
#define USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1 0x0732
|
|
#define USB_DEVICE_ID_MS_DIGITAL_MEDIA_600 0x0750
|
|
#define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500 0x076c
|
|
-#define USB_DEVICE_ID_MS_COMFORT_KEYBOARD 0x00e3
|
|
-#define USB_DEVICE_ID_MS_SURFACE_PRO_2 0x0799
|
|
-#define USB_DEVICE_ID_MS_TOUCH_COVER_2 0x07a7
|
|
-#define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9
|
|
-#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
|
|
+#define USB_DEVICE_ID_MS_COMFORT_KEYBOARD 0x00e3
|
|
+#define USB_DEVICE_ID_MS_SURFACE_PRO_2 0x0799
|
|
+#define USB_DEVICE_ID_MS_TOUCH_COVER_2 0x07a7
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07de
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3 0x07dc
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_1 0x07de
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 0x07e2
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP 0x07dd
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4 0x07e8
|
|
+#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_1 0x07e4
|
|
+#define USB_DEVICE_ID_MS_SURFACE_BOOK 0x07cd
|
|
+#define USB_DEVICE_ID_MS_SURFACE_BOOK_2 0x0922
|
|
+#define USB_DEVICE_ID_MS_SURFACE_LAPTOP 0xf001
|
|
+#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
|
|
|
|
#define USB_VENDOR_ID_MOJO 0x8282
|
|
#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
|
|
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
|
|
index 96e7d32..9127164 100644
|
|
--- a/drivers/hid/hid-microsoft.c
|
|
+++ b/drivers/hid/hid-microsoft.c
|
|
@@ -274,6 +274,8 @@ static const struct hid_device_id ms_devices[] = {
|
|
.driver_data = MS_NOGET },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500),
|
|
.driver_data = MS_DUPLICATE_USAGES },
|
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_LAPTOP),
|
|
+ .driver_data = MS_HIDINPUT },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER),
|
|
.driver_data = MS_HIDINPUT },
|
|
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD),
|
|
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
index 97c7c99..4a837b6 100644
|
|
--- a/drivers/hid/hid-multitouch.c
|
|
+++ b/drivers/hid/hid-multitouch.c
|
|
@@ -1611,6 +1611,52 @@ static const struct hid_device_id mt_devices[] = {
|
|
HID_USB_DEVICE(USB_VENDOR_ID_LG,
|
|
USB_DEVICE_ID_LG_MELFAS_MT) },
|
|
|
|
+ /* Microsoft Touch Cover */
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TOUCH_COVER_2) },
|
|
+
|
|
+ /* Microsoft Type Cover */
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_2) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_3) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_3) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_1) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_4) },
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_1) },
|
|
+
|
|
+ /* Microsoft Surface Book */
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_SURFACE_BOOK) },
|
|
+
|
|
+ /* Microsoft Surface Book 2 */
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_SURFACE_BOOK_2) },
|
|
+
|
|
+ /* Microsoft Power Cover */
|
|
+ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS,
|
|
+ MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
|
|
+ USB_DEVICE_ID_MS_POWER_COVER) },
|
|
+
|
|
/* MosArt panels */
|
|
{ .driver_data = MT_CLS_CONFIDENCE_MINUS_ONE,
|
|
MT_USB_DEVICE(USB_VENDOR_ID_ASUS,
|
|
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
|
|
index f489a5c..ff88ddc 100644
|
|
--- a/drivers/hid/usbhid/hid-quirks.c
|
|
+++ b/drivers/hid/usbhid/hid-quirks.c
|
|
@@ -108,8 +108,18 @@ static const struct hid_blacklist {
|
|
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A, HID_QUIRK_ALWAYS_POLL },
|
|
{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
|
|
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
- { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_1, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_1, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_BOOK, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_BOOK_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_LAPTOP, HID_QUIRK_NO_INIT_REPORTS },
|
|
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS },
|
|
{ USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
|
|
{ USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
|