Comment 104 for bug 1878279

Revision history for this message
Hans de Goede (j-w-r-degoede) wrote :

Hi All,

So this is a bit of a mess which I'm trying to sort out ATM, there are at least 4 different issues with Ideapad touchpads that I'm aware of:

1. There was a Linux ACPI issue where the resource-list (_CRS) for the touchpad given to Linux was not correct, this has been fixed for a while now by these 2 commits from me:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21653a4181ff292480599dad996a2b759ccf050f
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8058d69905058ec8f467a120b5ec5bb831ea67f3
These commits should be in recent Ubuntu kernels so if you are still seeing issues then this issue was not the root cause for your laptop model.

2. On some Ideapad models the elants_i2c driver takes control of handling the touchpad, but the touchpad does not talk the elants protocol at all, it uses the standard I2C-HID protocol so this does not work. If adding "initcall_blacklist=elants_i2c_driver_init" to your kernel commandline fixes things, then your Ideapad model is hit by this. This is fixed now by this commit from me:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65299e8bfb24774e6340e93ae49f6626598917c8
This commit was added to the 5.10.y and 5.12.y stable kernel series a couple of days ago, so hopefully it will get added to the Ubuntu kernels soon too.

3. On some Ideapads the BIOS seems to corrupt its own settings (often after a BIOS update) and as a result of this the BIOS is returning bogus addresses (NULL or 0xffffffff) as base-address from the ACPI _CRS call for some PCI devices, including the I2C controller connected to the touchpad. If adding "pci=nocrs" as a workaround helps then your model Ideapad is affected by this issue.

4. On some Ideapads something goes wrong with the OSYS code in the ACPI tables, this code is responsible for detecting which Windows version the ACPI tables think they are dealing with (or which Windows version Linux mimicks in case you are running Linux). To see if your Ideapad is affected by this issue try running:
"cat /sys/bus/acpi/devices/XXXX0000\:00/status"
from a terminal, if the output of this command is "15" then your model is affected by this issue. At least the "Lenovo Thinkbook 14-ILL" is known to be affected by this. The exact root cause of this is unknown atm. If your laptop is affected by this please run "acpidump -o acpidump" and attach the acpidump here, in combination with specifying the exact model of your laptop.