-
-
Notifications
You must be signed in to change notification settings - Fork 310
Description
Hardware: Microsoft Surface Laptop Go
Kernel: 6.18.7-surface-1
OS: Debian (linux-surface kernel)
Description
After resuming from suspend (s2idle), the touchpad misreports touch contact count by one: two-finger gestures are interpreted as one-finger, three-finger as two-finger. The issue persists until the i2c_hid_acpi driver is manually re-bound, which fully resolves it:
echo i2c-MELF0411:00 > /sys/bus/i2c/drivers/i2c_hid_acpi/unbind
sleep 0.5
echo i2c-MELF0411:00 > /sys/bus/i2c/drivers/i2c_hid_acpi/bindRoot Cause (observed)
At boot, the device returns an incorrect report size for feature 4:
i2c_hid_acpi i2c-MELF0411:00: device returned incorrect report (209 vs 4 expected)
hid-multitouch 0018:1FD2:9005.0001: failed to fetch feature 4
The resume path is completely silent for this device — no reinitialization is attempted across multiple suspend/resume cycles. The degraded state from boot is inherited after every resume. Multiple suspend/resume cycles in the kernel log confirm no touchpad messages appear at resume. Feature 4 is present in the HID descriptor and appears to configure contact reporting mode. Without it, hid-multitouch operates with an off-by-one contact count.
HID Descriptor
00000000: 050d 0904 a101 8510 0954 7508 9501 1500 .........Tu.....
00000010: 250a 8102 0922 a102 0951 7508 250a 8102 %...."...Qu.%...
00000020: 0942 7501 2501 8102 9507 8103 0501 7510 .Bu.%.........u.
00000030: 9501 26ff 0f35 0055 0e65 1109 3046 470a ..&..5.U.e..0FG.
00000040: 8102 0931 46da 0681 0245 00c0 050d 0922 ...1F....E......"
00000050: a102 0951 7508 250a 8102 0942 7501 2501 ...Qu.%....Bu.%.
00000060: 8102 9507 8103 0501 7510 9501 26ff 0f35 ........u...&..5
00000070: 0055 0e65 1109 3046 470a 8102 0931 46da .U.e..0FG....1F.
00000080: 0681 0245 00c0 050d 0922 a102 0951 7508 ...E....."...Qu.
00000090: 250a 8102 0942 7501 2501 8102 9507 8103 %....Bu.%.......
000000a0: 0501 7510 9501 26ff 0f35 0055 0e65 1109 ..u...&..5.U.e..
000000b0: 3046 470a 8102 0931 46da 0681 0245 00c0 0FG....1F....E..
000000c0: 050d 0922 a102 0951 7508 250a 8102 0942 ..."...Qu.%....B
000000d0: 7501 2501 8102 9507 8103 0501 7510 9501 u.%.........u...
000000e0: 26ff 0f35 0055 0e65 1109 3046 470a 8102 &..5.U.e..0FG...
000000f0: 0931 46da 0681 0245 00c0 050d 0922 a102 .1F....E......"..
00000100: 0951 7508 250a 8102 0942 7501 2501 8102 .Qu.%....Bu.%...
00000110: 9507 8103 0501 7510 9501 26ff 0f35 0055 ......u...&..5.U
00000120: 0e65 1109 3046 470a 8102 0931 46da 0681 .e..0FG....1F...
00000130: 0245 00c0 050d 0922 a102 0951 7508 250a .E....."...Qu.%.
00000140: 8102 0942 7501 2501 8102 9507 8103 0501 ...Bu.%..........
00000150: 7510 9501 26ff 0f35 0055 0e65 1109 3046 u...&..5.U.e..0F
00000160: 470a 8102 0931 46da 0681 0245 00c0 050d G....1F....E....
00000170: 0922 a102 0951 7508 250a 8102 0942 7501 ."...Qu.%....Bu.
00000180: 2501 8102 9507 8103 0501 7510 9501 26ff %.........u...&.
00000190: 0f35 0055 0e65 1109 3046 470a 8102 0931 .5.U.e..0FG....1
000001a0: 46da 0681 0245 00c0 050d 0922 a102 0951 F....E....."...Q
000001b0: 7508 250a 8102 0942 7501 2501 8102 9507 u.%....Bu.%.....
000001c0: 8103 0501 7510 9501 26ff 0f35 0055 0e65 ....u...&..5.U.e
000001d0: 1109 3046 470a 8102 0931 46da 0681 0245 ..0FG....1F....E
000001e0: 00c0 050d 0922 a102 0951 7508 250a 8102 ....."...Qu.%...
000001f0: 0942 7501 2501 8102 9507 8103 0501 7510 .Bu.%.........u.
00000200: 9501 26ff 0f35 0055 0e65 1109 3046 470a ..&..5.U.e..0FG.
00000210: 8102 0931 46da 0681 0245 00c0 050d 0922 ...1F....E......"
00000220: a102 0951 7508 250a 8102 0942 7501 2501 ...Qu.%....Bu.%.
00000230: 8102 9507 8103 0501 7510 9501 26ff 0f35 ........u...&..5
00000240: 0055 0e65 1109 3046 470a 8102 0931 46da .U.e..0FG....1F.
00000250: 0681 0245 00c0 050d 0956 7510 9501 550c ...E.....Vu...U.
00000260: 6601 1047 ffff 0000 27ff ff00 0081 0285 f..G....'.......
00000270: 0809 5575 0825 0ab1 0285 0406 00ff 09c5 ..Uu.%..........
00000280: 9600 0126 ff00 b102 c006 00ff 09ff a101 ...&............
00000290: 8509 09ff 7508 953f 1500 26ff 0091 0085 ....u..?..&.....
000002a0: 0a09 ff81 00c0 ......
Relation to Prior Issue
Previously reported as #688, closed by reference without a fix. Reproducible on kernel 6.18.7-surface-1 on Debian.
Steps to Reproduce
- Boot the machine.
- Verify touchpad gestures work correctly (two-finger scroll, etc.).
- Sleep the machine (
systemctl suspend). - Wake the machine.
- Attempt two-finger scroll — behaves as one-finger drag.
Expected
Touchpad reinitializes correctly on resume; two-finger scroll works.
Actual
Two-finger scroll interpreted as one-finger; contact count appears shifted by one after resume.
Workaround
Re-bind i2c_hid_acpi after resume:
echo i2c-MELF0411:00 > /sys/bus/i2c/drivers/i2c_hid_acpi/unbind
sleep 0.5
echo i2c-MELF0411:00 > /sys/bus/i2c/drivers/i2c_hid_acpi/bind