Bug 209413

Summary: i2c_hid i2c-ELAN1201:00: HID over i2c has not been provided an Int IRQ
Product: Drivers Reporter: Jeroen Jeurissen (jeroenjeurissen)
Component: I2CAssignee: Drivers/I2C virtual user (drivers-i2c)
Status: RESOLVED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: cheewai.lai+lkml, liudng
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.9.0-rc6-next-20200924-1.gedf2da2-vanilla Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg

Description Jeroen Jeurissen 2020-09-28 10:41:04 UTC
Created attachment 292685 [details]
dmesg

My touchpad doesn't work on boot.
dmesg errors:
[    2.760685] i2c_hid i2c-ELAN1201:00: HID over i2c has not been provided an Int IRQ
[    2.760822] i2c_hid: probe of i2c-ELAN1201:00 failed with error -22

workaround:
when I run "sudo modprobe i2c-hid" my touchpad works again.
Comment 1 Jeroen Jeurissen 2020-09-28 13:13:29 UTC
This kernel configuration should fix it.
https://asus-linux.org/wiki/g14-and-g15/hardware/touchpad/
I don't know how it translates to modules though.
Comment 2 Jeroen Jeurissen 2020-09-28 13:15:33 UTC
 I think it's the order in which all kernel modules are loaded. There where times that it just worked.
Comment 3 Jeroen Jeurissen 2020-09-28 14:31:49 UTC
/etc/modprobe.d/99-elan.conf
softdep elan_i2c pre: pinctrl_amd
softdep hid_elan pre: pinctrl_amd
sudo mkinitrd  
fixed it
Comment 4 Jeroen Jeurissen 2020-09-28 16:49:03 UTC
bad news, it only works on some boots. I can't explain it.
Comment 5 Liu Dng 2020-10-08 03:15:13 UTC
The same problem exists in XiaoXin pro 13 API.

Kernel:

Linux version 5.8.13-300.fc33.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 10.2.1 20200826 (Red Hat 10.2.1-3), GNU ld version 2.35-10.fc33) #1 SMP Thu Oct 1 20:49:47 UTC 2020

$ dmesg -H

[  +0.058027] i2c_hid i2c-MSFT0001:00: HID over i2c has not been provided an Int IRQ
[  +0.000039] i2c_hid: probe of i2c-MSFT0001:00 failed with error -22

Description:

1, Power on, the touchpad cannot be recognized.
2, Restart, the touchpad can be recognized.
Comment 6 cheewai 2020-10-16 15:34:24 UTC
Same issue with openSUSE Tumbleweed 20201009 Linux 5.8.14-1 on Tongfang PF4NU1F

When it works, dmesg shows

[    3.144328] i2c_hid i2c-UNIW0001:00: supply vdd not found, using dummy regulator
[    3.144340] i2c_hid i2c-UNIW0001:00: supply vddl not found, using dummy regulator
...
[    3.305015] input: UNIW0001:00 093A:0255 Mouse as /devices/platform/AMDI0010:02/i2c-0/i2c-
UNIW0001:00/0018:093A:0255.0001/input/input2
[    3.305141] input: UNIW0001:00 093A:0255 Touchpad as /devices/platform/AMDI0010:02/i2c-0/i2c-UNIW0001:00/0018:093A:0255.0001/input/input3
[    3.305262] hid-generic 0018:093A:0255.0001: input,hidraw0: I2C HID v1.00 Mouse [UNIW0001:00 093A:0255] on i2c-UNIW0001:00

When it doesn't, dmesg shows

[    2.984796] i2c_hid i2c-UNIW0001:00: HID over i2c has not been provided an Int IRQ
[    2.984864] i2c_hid: probe of i2c-UNIW0001:00 failed with error -22
Comment 7 Jeroen Jeurissen 2020-10-16 15:45:32 UTC
I hear another workaround is by changing the pinctrl-amd to built-in instead of to load it as a module.
Comment 8 Jeroen Jeurissen 2020-10-16 15:46:05 UTC
For more info see: https://bugzilla.suse.com/show_bug.cgi?id=1177049#c4
Comment 9 cheewai 2020-10-17 04:46:22 UTC
(In reply to Jeroen Jeurissen from comment #8)
> For more info see: https://bugzilla.suse.com/show_bug.cgi?id=1177049#c4

Thank you very much Jeroen. The solution works for me. 

With different hardware on my laptop based on dmesg output, I created /etc/modules-load.d/99_touchpad.conf

softdep hid_i2c pre: pinctrl_amd
softdep hid_generic pre: pinctrl_amd
Comment 10 Jeroen Jeurissen 2020-12-16 16:25:27 UTC
Fixed in more recent kernel version.