Problem with touchpad when using Linux 5.12

Hi folks,
I’m facing this problem since the early builds of 5.12, and I am almost sure it will be the same with the release version too. Thing is, my touchpad doesn’t work on a fresh boot at all, however, it starts working once I make my laptop suspend and resume then. Unloading / reloading modules has no impact on the issue, only this sleep/wake procedure is effective.
That’s why I’m thinking now, is there a way to make some device suspend and resume it manually without making whole system go to sleep mode? I tried googling but found no good advice on this topic.
Here’s some useful info:

5.11 (for comparison):

xinput list

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB OPTICAL MOUSE id=11 [slave pointer (2)]
⎜ ↳ ETD2303:00 04F3:3083 Mouse id=14 [slave pointer (2)]
⎜ ↳ ETD2303:00 04F3:3083 Touchpad id=15 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=19 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Video Bus id=9 [slave keyboard (3)]
↳ XiaoMi USB 2.0 Webcam: XiaoMi U id=10 [slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=12 [slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=13 [slave keyboard (3)]
↳ Xiaomi WMI keys id=16 [slave keyboard (3)]
↳ Xiaomi WMI keys id=17 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=18 [slave keyboard (3)]

lsmod |grep -E 'i2c|hid'

i2c_i801 36864 0
hid_multitouch 32768 0
i2c_smbus 20480 1 i2c_i801
i2c_hid 32768 0
mac_hid 16384 0
usbhid 65536 0
hid_apple 16384 0
i2c_algo_bit 16384 1 i915

dmesg | grep i2c

[ 8.194131] input: ETD2303:00 04F3:3083 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ETD2303:00/0018:04F3:3083.0004/input/input10
[ 8.194370] input: ETD2303:00 04F3:3083 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ETD2303:00/0018:04F3:3083.0004/input/input12
[ 8.194416] hid-generic 0018:04F3:3083.0004: input,hidraw3: I2C HID v1.00 Mouse [ETD2303:00 04F3:3083] on i2c-ETD2303:00
[ 8.226006] i2c i2c-7: 2/2 memory slots populated (from DMI)
[ 9.056092] input: ETD2303:00 04F3:3083 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ETD2303:00/0018:04F3:3083.0004/input/input17
[ 9.056170] input: ETD2303:00 04F3:3083 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-5/i2c-ETD2303:00/0018:04F3:3083.0004/input/input19
[ 9.056224] hid-multitouch 0018:04F3:3083.0004: input,hidraw3: I2C HID v1.00 Mouse [ETD2303:00 04F3:3083] on i2c-ETD2303:00

5.12:

xinput list

Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB OPTICAL MOUSE id=11 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Video Bus id=9 [slave keyboard (3)]
↳ XiaoMi USB 2.0 Webcam: XiaoMi U id=10 [slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=12 [slave keyboard (3)]
↳ Apple, Inc Apple Keyboard id=13 [slave keyboard (3)]
↳ Xiaomi WMI keys id=14 [slave keyboard (3)]
↳ Xiaomi WMI keys id=15 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]

lsmod |grep -E 'i2c|hid'

i2c_i801 36864 0
i2c_smbus 20480 1 i2c_i801
i2c_hid_acpi 16384 0
i2c_hid 32768 1 i2c_hid_acpi
mac_hid 16384 0
usbhid 65536 0
hid_apple 16384 0
i2c_algo_bit 16384 1 i915

sudo dmesg | grep i2c

[ 8.463730] i2c_hid_acpi i2c-ETD2303:00: HID over i2c has not been provided an Int IRQ
[ 8.463765] i2c_hid_acpi: probe of i2c-ETD2303:00 failed with error -22

As you can see, it seems that since 5.12 there’s slightly different set of drivers.
Maybe there’s another solution, some proper one, not a workaround I’ve described above. However, I can’t think of it because I have zero understanding of these IRQ stuff, and if it involves some extra work of patching ACPI tables and loading custom ones on boot, well, I think I could do that but that’s a huge amount of extra hassle and I’d better just find a way to suspend/resume a specific device with systemd then.

All I can say in brief is that I’m looking forward to any your suggestions.

Expect such a problem when using non-stable kernels. New kernel versions mean a chance for developers to introduce something new (or experiment with existing one) that may break existing behavior, so broken drivers are not uncommon.

Hi @leledumbo
Today’s linux512-rc6 is finally able to detect and enumerate my touchpad properly, most likely thanks to ACPI-related commits between rc5 and rc6. Marked your reply as solution since it was the only reply here anyway :slight_smile:

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.