summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorshadoukun2017-09-06 16:11:44 -0400
committershadoukun2017-09-06 16:11:44 -0400
commit2617f52f885171fe3ca8ab7f95c5cd95abf01b95 (patch)
tree92a37fb4d36280d84113c3db385b1269dbabff96
parent39a6ce0e1544863f7ba8daf6e7d227c98d4d0b2a (diff)
downloadaur-2617f52f885171fe3ca8ab7f95c5cd95abf01b95.tar.gz
various patches. updated udev rules.
-rw-r--r--0002-ipts.patch48
-rw-r--r--0003-wifi.patch2
-rw-r--r--0004-sd.patch14
-rw-r--r--0005-hid.patch156
-rw-r--r--99-ipts.rules18
-rw-r--r--PKGBUILD14
-rw-r--r--config.x86_642
7 files changed, 245 insertions, 9 deletions
diff --git a/0002-ipts.patch b/0002-ipts.patch
index 7e8d1461f938..aabaeb8a9a3b 100644
--- a/0002-ipts.patch
+++ b/0002-ipts.patch
@@ -5914,3 +5914,51 @@ index 00000000..f329bbfb
+void intel_ipts_disconnect(uint64_t gfx_handle);
+
+#endif // INTEL_IPTS_IF_H
+diff --git a/drivers//hid/hid-multitouch.c b/drivers//hid/hid-multitouch.c
+index 09f1cd60..3edf5685 100644
+--- a/drivers//hid/hid-multitouch.c
++++ b/drivers//hid/hid-multitouch.c
+@@ -131,6 +131,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 contact_count_seen;
+
+ /* classes of device behavior */
+ #define MT_CLS_DEFAULT 0x0001
+@@ -559,9 +560,10 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
+ usage->usage_index >= field->report_count)
+ return 1;
+
+- if (td->cc_index < 0) {
++ if (contact_count_seen != 1) {
+ td->cc_index = field->index;
+ td->cc_value_index = usage->usage_index;
++ contact_count_seen++;
+ }
+
+ return 1;
+@@ -1047,10 +1049,6 @@ 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);
+- } else if (hi->report->field[0]->logical == HID_DG_TOUCHSCREEN) {
+- suffix = "SingleTouch";
+- /* force BTN_STYLUS to allow tablet matching in udev */
+- __set_bit(BTN_STYLUS, hi->input->keybit);
+ } else {
+ switch (field->application) {
+ case HID_GD_KEYBOARD:
+diff --git a/drivers//misc/ipts/ipts-gfx.c b/drivers//misc/ipts/ipts-gfx.c
+index ff435650..51727770 100644
+--- a/drivers//misc/ipts/ipts-gfx.c
++++ b/drivers//misc/ipts/ipts-gfx.c
+@@ -67,8 +67,6 @@ static void disconnect_gfx(ipts_info_t *ipts)
+ intel_ipts_disconnect(ipts->gfx_info.gfx_handle);
+ }
+
+-#define RUN_DBG_THREAD
+-
+ #ifdef RUN_DBG_THREAD
+ #include "../mei/mei_dev.h"
+
diff --git a/0003-wifi.patch b/0003-wifi.patch
index 6e96af8f971e..e81ecef37277 100644
--- a/0003-wifi.patch
+++ b/0003-wifi.patch
@@ -68,4 +68,4 @@ index ac62bce5..293607e6 100644
+
skb_put(skb, MWIFIEX_UPLD_SIZE - skb->len);
skb_trim(skb, rx_len);
-
+
diff --git a/0004-sd.patch b/0004-sd.patch
new file mode 100644
index 000000000000..96028febda4f
--- /dev/null
+++ b/0004-sd.patch
@@ -0,0 +1,14 @@
+diff --git a/drivers//usb/core/hub.c b/drivers//usb/core/hub.c
+index 0881a3e8..e6f05033 100644
+--- a/kernel/drivers/usb/core/hub.c
++++ b/drivers//usb/core/hub.c
+@@ -4049,7 +4049,8 @@ void usb_enable_lpm(struct usb_device *udev)
+ if (!udev || !udev->parent ||
+ udev->speed < USB_SPEED_SUPER ||
+ !udev->lpm_capable ||
+- udev->state < USB_STATE_DEFAULT)
++ udev->state < USB_STATE_DEFAULT ||
++ !udev->bos || !udev->bos->ss_cap)
+ return;
+
+ udev->lpm_disable_count--;
diff --git a/0005-hid.patch b/0005-hid.patch
new file mode 100644
index 000000000000..89187711288e
--- /dev/null
+++ b/0005-hid.patch
@@ -0,0 +1,156 @@
+diff --git a/drivers//hid/hid-ids.h b/drivers//hid/hid-ids.h
+index 4f9a3938..07a0be0d 100644
+--- a/drivers//hid/hid-ids.h
++++ b/drivers//hid/hid-ids.h
+@@ -741,11 +741,19 @@
+ #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_POWER_COVER 0x07da
+
+ #define USB_VENDOR_ID_MOJO 0x8282
+ #define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
+diff --git a/drivers//hid/hid-multitouch.c b/drivers//hid/hid-multitouch.c
+index 937a7084..6af8baf3 100644
+--- a/drivers//hid/hid-multitouch.c
++++ b/drivers//hid/hid-multitouch.c
+@@ -1454,6 +1454,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/usbhid/hid-quirks.c b/drivers//hid/usbhid/hid-quirks.c
+index a88e7c7b..1e1e3d97 100644
+--- a/drivers//hid/usbhid/hid-quirks.c
++++ b/drivers//hid/usbhid/hid-quirks.c
+@@ -106,8 +106,16 @@ 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_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//hid/hid-ids.h b/drivers//hid/hid-ids.h
+index 07a0be0d..a58844b7 100644
+--- a/drivers//hid/hid-ids.h
++++ b/drivers//hid/hid-ids.h
+@@ -753,6 +753,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_LAPTOP 0x07f8
+ #define USB_DEVICE_ID_MS_POWER_COVER 0x07da
+
+ #define USB_VENDOR_ID_MOJO 0x8282
+diff --git a/drivers//hid/hid-multitouch.c b/drivers//hid/hid-multitouch.c
+index 6af8baf3..09f1cd60 100644
+--- a/drivers//hid/hid-multitouch.c
++++ b/drivers//hid/hid-multitouch.c
+@@ -1490,6 +1490,11 @@ 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/drivers//hid/usbhid/hid-quirks.c b/drivers//hid/usbhid/hid-quirks.c
+index 1e1e3d97..925ec6a4 100644
+--- a/drivers//hid/usbhid/hid-quirks.c
++++ b/drivers//hid/usbhid/hid-quirks.c
+@@ -116,6 +116,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_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//hid/hid-ids.h b/drivers//hid/hid-ids.h
+index a58844b7..2cecb040 100644
+--- a/drivers//hid/hid-ids.h
++++ b/drivers//hid/hid-ids.h
+@@ -753,7 +753,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_LAPTOP 0x07f8
++#define USB_DEVICE_ID_MS_SURFACE_LAPTOP 0xf001
+ #define USB_DEVICE_ID_MS_POWER_COVER 0x07da
+
+ #define USB_VENDOR_ID_MOJO 0x8282
diff --git a/99-ipts.rules b/99-ipts.rules
index 31e717b551ff..4f7d41a224e4 100644
--- a/99-ipts.rules
+++ b/99-ipts.rules
@@ -1,5 +1,17 @@
-# IPTS Touchscreen
+# IPTS Touchscreen (SP4)
+SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:006A SingleTouch", ENV{ID_INPUT_TOUCHSCREEN}="1", SYMLINK+="input/touchscreen"
+
+# IPTS Pen (SP4)
+SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:006A Pen", SYMLINK+="input/pen"
+
+# IPTS Touchscreen (SB)
SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:005E SingleTouch", ENV{ID_INPUT_TOUCHSCREEN}="1", SYMLINK+="input/touchscreen"
-# IPTS Pen
-SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:005E Pen", ENV{ID_INPUT_TOUCHSCREEN}="1", SYMLINK+="input/pen"
+# IPTS Pen (SB)
+SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:005E Pen", SYMLINK+="input/pen"
+#
+# IPTS Touchscreen (SP2017)
+SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:001F SingleTouch", ENV{ID_INPUT_TOUCHSCREEN}="1", SYMLINK+="input/touchscreen"
+
+# IPTS Pen (SP2017)
+SUBSYSTEMS=="input", ATTRS{name}=="ipts 1B96:001F Pen", SYMLINK+="input/pen"
diff --git a/PKGBUILD b/PKGBUILD
index ae87d47c9914..65984f14a0b4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgbase=linux-surface4 # Build kernel with a different name
_srcname=linux-4.12
pkgver=4.12.8
-pkgrel=1
+pkgrel=2
arch=('x86_64')
url="https://www.kernel.org/"
license=('GPL2')
@@ -23,6 +23,8 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
# surface patches
'0002-ipts.patch'
'0003-wifi.patch'
+ '0004-sd.patch'
+ '0005-hid.patch'
# touchscreen udev rules
'99-ipts.rules'
# IPTS firmware config.
@@ -41,11 +43,13 @@ sha256sums=('a45c3becd4d08ce411c14628a949d08e2433d8cdeca92036c7013980e93858ab'
'48e0505438bb4ccc7a0e050a896122b490e8f1b1446aa3833841a9d4d7853d68'
'fc606711a922638d5cc4358f47f69f554d9e6eab1cec91f0b49f00911f399722'
'b830ce777543c0edd20a77d70f204c095f2429bb37151cd4a8c9dfae2af8d51a'
- 'e3b91f55d351612394e14c99631601978f3d8b560203b3467797b758eebf777e'
- '0faba3f84e262ef16ff5a78943025d172f466066d2e5c5e5035d5915fa90ba01'
+ 'cbd508d55e446ad5e00a7534490a8b6faa8987dc22dab139fa8ac42b90735cf3'
+ 'd748010776aa4016e920b46f6ef6847e52d4214e9b6afe752c340c5a9644870f'
+ '311857771c63ed5145effedae55830b3c7fdc8865e145e94d54b9aa2e094779e'
+ '065fa8cb24062afee3c0aa8140e65560c2ebfb08f714222a3e0b3b12e764097b'
'6db350669dd2250f465e2259c3d7f75316dc448d849a60ef701e5e77ca7a95b0'
'eed5c04a5f8841d52292fbb321990c79316ce98cd21324c71226cdc95cc20d09'
- '585cdf04b6c27b8124e5ce582d2d0d63e020f8e53fc3d794305a96e61e8cc8ab'
+ '90fffe84ea442756fb168d22d9b6b9f2d8d7bc631b81188836caaa33a9f92554'
'834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65')
validpgpkeys=(
@@ -64,6 +68,8 @@ prepare() {
# surface Patches
patch -Np1 -i "${srcdir}/0002-ipts.patch"
patch -Np1 -i "${srcdir}/0003-wifi.patch"
+ patch -Np1 -i "${srcdir}/0004-sd.patch"
+ patch -Np1 -i "${srcdir}/0005-hid.patch"
mkdir -p "firmware/intel/ipts"
cp "${srcdir}/ipts_fw_config.bin" "firmware/intel/ipts/"
diff --git a/config.x86_64 b/config.x86_64
index 329777758477..a71802021535 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -1753,7 +1753,7 @@ CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEFAULT_PS is not set
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_CRDA_SUPPORT=y