Bug 1161233 - I2C Touchpad doesn't work and requires workarounds. Acer A315-41
I2C Touchpad doesn't work and requires workarounds. Acer A315-41
Status: RESOLVED NORESPONSE
Classification: openSUSE
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Kernel
Current
Other Other
: P5 - None : Normal (vote)
: ---
Assigned To: openSUSE Kernel Bugs
E-mail List
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2020-01-17 18:52 UTC by alex
Modified: 2020-08-28 12:50 UTC (History)
4 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---
tiwai: needinfo? (nicomu.net)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description alex 2020-01-17 18:52:32 UTC
OS: 
Distributor ID: openSUSE
Description:    openSUSE Tumbleweed
Release:        20200115

Kernel: 
5.4.10-1-default

Hardware:
Acer Aspire A315-41 laptop, AMD Ryzen CPU with Vega graphics. I2C touchpad.

Issue: 
Error message during boot: 
2020-01-17T15:06:13.277859-03:00 AcerLinux kernel: [    4.524912] i2c_hid i2c-SYNA7DB5:01: HID over i2c has not been provided an Int IRQ
After this touchpad does not work

Workaround:
Run following commands in the terminal:
sudo modprobe -r i2c_hid
sudo modporbe i2c_hid

I had submitted similar bug before, but apparently fix didn't fix this issue, but looks like it has fixed another important issue (unreliable boot). 
Interestingly enough, on openSUSE Leap kernel touchpad never had any issues. 
Maybe it has nothing to do with kernel, I don't really know, because I think I have tested 5.something kernel under Leap, and I had no issues with touchpad.

It might be a dependency problem: ( https://github.com/Syniurge/i2c-amd-mp2/issues/3 , according to this pinctrl_amd should be loaded before i2c_hid, I don't know, since I don't quite understand how Linux works)
Comment 1 Takashi Iwai 2020-01-20 14:37:27 UTC
If that's the case of missing dependency, it might be fixed by adding a softdep manually.  e.g. create a file /etc/modprobe.d/50-i2c-hid.conf containing the following:
  softdep i2c-hid pre: pinctrl-amd

Then rebuild initrd.  Could you check whether this works around the issue?
Comment 2 Daniel Molkentin 2020-04-21 13:12:22 UTC
Dracut only picks the modules to load, but takes the ordering from the systems modprobe.d and friends. So the work-around proposed in https://bugzilla.opensuse.org/show_bug.cgi?id=1161233#c1 needs to go to suse-module-tools.

However, according to https://github.com/Syniurge/i2c-amd-mp2/issues/3, it might be a problem of the DSDT specification in that laptop?
Comment 3 Takashi Iwai 2020-04-21 13:28:17 UTC
(In reply to Daniel Molkentin from comment #2)
> Dracut only picks the modules to load, but takes the ordering from the
> systems modprobe.d and friends. So the work-around proposed in
> https://bugzilla.opensuse.org/show_bug.cgi?id=1161233#c1 needs to go to
> suse-module-tools.

Well, the ordering is needed only if both pinctrl-amd and i2c-hid are used.
So, putting softdep unconditionally to the package can't work; it'll lead to loading an unneeded module.

> However, according to https://github.com/Syniurge/i2c-amd-mp2/issues/3, it
> might be a problem of the DSDT specification in that laptop?

I don't think so.  This is a generic problem that is seen on a few other machines, IIRC.  And a similar problem was 
The pinctrl driver has to be probed before other drivers for the belonging devices are initialized.  It's logical if you think of the role of the pinctrl driver :)
Comment 4 Daniel Molkentin 2020-04-22 16:22:03 UTC
The only way to force early loading is to use "rd.driver.pre=". Can you try:

echo "rd.driver.pre=pinctrl-amd" > /etc/dracut.conf.d/01-early-load.conf
Comment 5 Miroslav Beneš 2020-08-28 12:50:42 UTC
No response, closing. Reopen if the issue persists with the latest kernel in TW and provide the required information, please.