diff --git a/kernel/drivers/hid/hid-core.c b/kernel/drivers/hid/hid-core.c index 330ca9838..6c9b84972 100644 --- a/kernel/drivers/hid/hid-core.c +++ b/kernel/drivers/hid/hid-core.c @@ -723,7 +723,9 @@ 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_SURFACE_LAPTOP || + hid->product == USB_DEVICE_ID_MS_POWER_COVER) && hid->group == HID_GROUP_MULTITOUCH) hid->group = HID_GROUP_GENERIC; @@ -2179,6 +2181,8 @@ 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_SURFACE_LAPTOP_2) }, { 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/kernel/drivers/hid/hid-ids.h b/kernel/drivers/hid/hid-ids.h index b992a50b2..5e33d97d6 100644 --- a/kernel/drivers/hid/hid-ids.h +++ b/kernel/drivers/hid/hid-ids.h @@ -770,6 +770,7 @@ #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_LAPTOP 0x0904 +#define USB_DEVICE_ID_MS_SURFACE_LAPTOP_2 0xf001 #define USB_DEVICE_ID_MS_POWER_COVER 0x07da #define USB_VENDOR_ID_MOJO 0x8282 diff --git a/kernel/drivers/hid/hid-microsoft.c b/kernel/drivers/hid/hid-microsoft.c index 96e7d3231..708c5bb02 100644 --- a/kernel/drivers/hid/hid-microsoft.c +++ b/kernel/drivers/hid/hid-microsoft.c @@ -274,6 +274,10 @@ 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_SURFACE_LAPTOP_2), + .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/kernel/drivers/hid/hid-multitouch.c b/kernel/drivers/hid/hid-multitouch.c index 65b9e78b8..f66abb6e7 100644 --- a/kernel/drivers/hid/hid-multitouch.c +++ b/kernel/drivers/hid/hid-multitouch.c @@ -1636,11 +1636,6 @@ static const struct hid_device_id mt_devices[] = { MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_BOOK) }, - /* Microsoft Surface Laptop */ - { .driver_data = MT_CLS_EXPORT_ALL_INPUTS, - MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, - USB_DEVICE_ID_MS_SURFACE_LAPTOP) }, - /* Microsoft Power Cover */ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS, MT_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, diff --git a/kernel/drivers/hid/usbhid/hid-quirks.c b/kernel/drivers/hid/usbhid/hid-quirks.c index 7b4812094..80f68b895 100644 --- a/kernel/drivers/hid/usbhid/hid-quirks.c +++ b/kernel/drivers/hid/usbhid/hid-quirks.c @@ -119,6 +119,7 @@ static const struct hid_blacklist { { 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_LAPTOP, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_LAPTOP_2, 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 },