summarylogtreecommitdiffstats
path: root/0002-hid.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-hid.patch')
-rw-r--r--0002-hid.patch355
1 files changed, 0 insertions, 355 deletions
diff --git a/0002-hid.patch b/0002-hid.patch
deleted file mode 100644
index 891df4af17f8..000000000000
--- a/0002-hid.patch
+++ /dev/null
@@ -1,355 +0,0 @@
-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..e011419 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -757,11 +757,20 @@
- #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_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 9e8c4d2..53cf903 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -140,6 +140,7 @@ struct mt_device {
-
- static void mt_post_parse_default_settings(struct mt_device *td);
- static void mt_post_parse(struct mt_device *td);
-+static int cc_seen = 0;
-
- /* classes of device behavior */
- #define MT_CLS_DEFAULT 0x0001
-@@ -588,8 +589,12 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- if (field->index >= field->report->maxfield ||
- usage->usage_index >= field->report_count)
- return 1;
-- td->cc_index = field->index;
-- td->cc_value_index = usage->usage_index;
-+
-+ if(cc_seen != 1) {
-+ td->cc_index = field->index;
-+ td->cc_value_index = usage->usage_index;
-+ cc_seen++;
-+ }
- return 1;
- case HID_DG_CONTACTMAX:
- /* we don't set td->last_slot_field as contactcount and
-@@ -626,6 +631,16 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- return 0;
- }
-
-+static int mt_touch_input_mapped(struct hid_device *hdev, struct hid_input *hi,
-+ struct hid_field *field, struct hid_usage *usage,
-+ unsigned long **bit, int *max)
-+{
-+ if (usage->type == EV_KEY || usage->type == EV_ABS)
-+ set_bit(usage->type, hi->input->evbit);
-+
-+ return -1;
-+}
-+
- static int mt_compute_slot(struct mt_device *td, struct input_dev *input)
- {
- __s32 quirks = td->mtclass.quirks;
-@@ -929,9 +944,11 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- field->application != HID_DG_TOUCHSCREEN &&
- field->application != HID_DG_PEN &&
- field->application != HID_DG_TOUCHPAD &&
-+ field->application != HID_GD_MOUSE &&
- field->application != HID_GD_KEYBOARD &&
- field->application != HID_GD_SYSTEM_CONTROL &&
- field->application != HID_CP_CONSUMER_CONTROL &&
-+ field->logical != HID_DG_TOUCHSCREEN &&
- field->application != HID_GD_WIRELESS_RADIO_CTLS &&
- !(field->application == HID_VD_ASUS_CUSTOM_MEDIA_KEYS &&
- td->mtclass.quirks & MT_QUIRK_ASUS_CUSTOM_UP))
-@@ -994,10 +1011,8 @@ static int mt_input_mapped(struct hid_device *hdev, struct hid_input *hi,
- return 0;
-
- if (field->application == HID_DG_TOUCHSCREEN ||
-- field->application == HID_DG_TOUCHPAD) {
-- /* We own these mappings, tell hid-input to ignore them */
-- return -1;
-- }
-+ field->application == HID_DG_TOUCHPAD)
-+ return mt_touch_input_mapped(hdev, hi, field, usage, bit, max);
-
- /* let hid-core decide for the others */
- return 0;
-@@ -1140,6 +1155,7 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
- suffix = "Pen";
- /* force BTN_STYLUS to allow tablet matching in udev */
- __set_bit(BTN_STYLUS, hi->input->keybit);
-+ __set_bit(INPUT_PROP_DIRECT, hi->input->propbit);
- } else {
- switch (field->application) {
- case HID_GD_KEYBOARD:
-@@ -1155,9 +1171,10 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
- suffix = "Pen";
- /* force BTN_STYLUS to allow tablet matching in udev */
- __set_bit(BTN_STYLUS, hi->input->keybit);
-+ __set_bit(INPUT_PROP_DIRECT, hi->input->propbit);
- break;
- case HID_DG_TOUCHSCREEN:
-- /* we do not set suffix = "Touchscreen" */
-+ suffix = "Touchscreen";
- break;
- case HID_DG_TOUCHPAD:
- suffix = "Touchpad";
-@@ -1286,6 +1303,7 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
- td->inputmode_value = MT_INPUTMODE_TOUCHSCREEN;
- td->cc_index = -1;
- td->mt_report_id = -1;
-+ cc_seen = 0;
- hid_set_drvdata(hdev, td);
-
- td->fields = devm_kzalloc(&hdev->dev, sizeof(struct mt_fields),
-@@ -1332,7 +1350,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
- hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS;
-
- setup_timer(&td->release_timer, mt_expired_timeout, (long)hdev);
--
- ret = hid_parse(hdev);
- if (ret != 0)
- return ret;
-@@ -1594,6 +1611,47 @@ 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 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/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c
-index 9145c21..71dbae5 100644
---- a/drivers/hid/i2c-hid/i2c-hid.c
-+++ b/drivers/hid/i2c-hid/i2c-hid.c
-@@ -929,11 +929,6 @@ static int i2c_hid_of_probe(struct i2c_client *client,
- }
- pdata->hid_descriptor_address = val;
-
-- ret = of_property_read_u32(dev->of_node, "post-power-on-delay-ms",
-- &val);
-- if (!ret)
-- pdata->post_power_delay_ms = val;
--
- return 0;
- }
-
-@@ -950,6 +945,16 @@ static inline int i2c_hid_of_probe(struct i2c_client *client,
- }
- #endif
-
-+static void i2c_hid_fwnode_probe(struct i2c_client *client,
-+ struct i2c_hid_platform_data *pdata)
-+{
-+ u32 val;
-+
-+ if (!device_property_read_u32(&client->dev, "post-power-on-delay-ms",
-+ &val))
-+ pdata->post_power_delay_ms = val;
-+}
-+
- static int i2c_hid_probe(struct i2c_client *client,
- const struct i2c_device_id *dev_id)
- {
-@@ -993,6 +998,9 @@ static int i2c_hid_probe(struct i2c_client *client,
- ihid->pdata = *platform_data;
- }
-
-+ /* Parse platform agnostic common properties from ACPI / device tree */
-+ i2c_hid_fwnode_probe(client, &ihid->pdata);
-+
- ihid->pdata.supply = devm_regulator_get(&client->dev, "vdd");
- if (IS_ERR(ihid->pdata.supply)) {
- ret = PTR_ERR(ihid->pdata.supply);
-diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
-index f489a5c..7b48120 100644
---- a/drivers/hid/usbhid/hid-quirks.c
-+++ b/drivers/hid/usbhid/hid-quirks.c
-@@ -108,8 +108,17 @@ 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_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 },
-diff --git a/drivers/platform/x86/surfacepro3_button.c b/drivers/platform/x86/surfacepro3_button.c
-index 6505c97..2d89a42 100644
---- a/drivers/platform/x86/surfacepro3_button.c
-+++ b/drivers/platform/x86/surfacepro3_button.c
-@@ -1,6 +1,6 @@
- /*
- * power/home/volume button support for
-- * Microsoft Surface Pro 3/4 tablet.
-+ * Microsoft Surface Pro 3/4/2017 tablet.
- *
- * Copyright (c) 2015 Intel Corporation.
- * All rights reserved.
-@@ -21,8 +21,9 @@
-
- #define SURFACE_PRO3_BUTTON_HID "MSHW0028"
- #define SURFACE_PRO4_BUTTON_HID "MSHW0040"
-+#define SURFACE_PRO2017_BUTTON_HID "MSHW0040"
- #define SURFACE_BUTTON_OBJ_NAME "VGBI"
--#define SURFACE_BUTTON_DEVICE_NAME "Surface Pro 3/4 Buttons"
-+#define SURFACE_BUTTON_DEVICE_NAME "Surface Pro 3/4/2017 Buttons"
-
- #define SURFACE_BUTTON_NOTIFY_TABLET_MODE 0xc8
-
-@@ -59,6 +60,7 @@ MODULE_LICENSE("GPL v2");
- static const struct acpi_device_id surface_button_device_ids[] = {
- {SURFACE_PRO3_BUTTON_HID, 0},
- {SURFACE_PRO4_BUTTON_HID, 0},
-+ {SURFACE_PRO2017_BUTTON_HID, 0},
- {"", 0},
- };
- MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index e011419cc..ebb9688f9 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -769,6 +769,7 @@
- #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
-
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 53cf903b7..4a837b68c 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -1647,6 +1647,11 @@ static const struct hid_device_id mt_devices[] = {
- 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,
-diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
-index 7b4812094..ff88ddc88 100644
---- a/drivers/hid/usbhid/hid-quirks.c
-+++ b/drivers/hid/usbhid/hid-quirks.c
-@@ -118,6 +118,7 @@ static const struct hid_blacklist {
- { 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 },