Re: Help getting ELAN066C touchpad working in Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2023-10-14 at 22:30 +0200, Hans de Goede wrote:
> On 10/14/23 22:22, Jonathan Dieter wrote:
> > # ls -l /sys/bus/i2c/devices
> > total 0
> > lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-0 ->
> > ../../../devices/platform/AMDI0010:00/i2c-0
> > lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-1 ->
> > ../../../devices/platform/AMDI0010:01/i2c-1
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:11 i2c-2 ->
> > ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-2
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:11 i2c-3 ->
> > ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-3
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:11 i2c-4 ->
> > ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-4
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:11 i2c-5 ->
> > ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/car
> > d1-eDP-1/i2c-5
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:11 i2c-6 ->
> > ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/car
> > d1-DP-1/i2c-6
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:15 i2c-7 ->
> > ../../../devices/pci0000:00/0000:00:14.0/i2c-7
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:15 i2c-8 ->
> > ../../../devices/pci0000:00/0000:00:14.0/i2c-8
> > lrwxrwxrwx. 1 root root 0 Oct 14 21:15 i2c-9 ->
> > ../../../devices/pci0000:00/0000:00:14.0/i2c-9
> > lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-ELAN238E:00 ->
> > ../../../devices/platform/AMDI0010:00/i2c-0/i2c-ELAN238E:00
> > 
> > # ls -l /sys/bus/acpi/devices/ELAN066C:00/
> > total 0
> > -r--r--r--. 1 root root 4096 Oct 14 21:16 hid
> > -r--r--r--. 1 root root 4096 Oct 14 21:16 modalias
> > -r--r--r--. 1 root root 4096 Oct 14 21:16 path
> > lrwxrwxrwx. 1 root root    0 Oct 14 21:16 physical_node ->
> > ../../../../platform/AMDI0010:01/ELAN066C:00
> 
> Ok this looks like a platform-device is being instantiated for the
> touchpad
> rather then an i2c_client.
> 
> Can you do:
> 
> ls -l /sys/bus/platform/devices | grep ELAN066C
> 
> and let me know the output of that ?
> 
> If that confirms that a platform device is being instantiated
> then the issue likely is that neither of the 2 if-s here:
> 
...
> 
> Returns true causing no i2c-client to get instantiated.
> 
> 
> If that is the case the first thing to do is try a DSDT overlay
> replacing the
> first if:
> 
>         If ((^^^PCI0.LPC0.H_EC.ECRD (RefOf (^^^PCI0.LPC0.H_EC.TPTY))
> == 0x01))
>         {
>                 ...
>         }
> 
> With dropping the If so you get:
> 
>         {
>                 ...
>         }
> 
> See:
> https://docs.kernel.org/admin-guide/acpi/initrd_table_override.html
> 
> And then specifically the "How does it work" section.

Hans,

Thank you so much!  Adding a DSDT overlay worked perfectly!  The
touchpad is functioning exactly as you would expect (using the
i2c_hid_acpi driver).

# ls -l /sys/bus/i2c/devices/
total 0
lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-0 -> ../../../devices/platform/AMDI0010:00/i2c-0
lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-1 -> ../../../devices/platform/AMDI0010:01/i2c-1
lrwxrwxrwx. 1 root root 0 Oct 14 22:02 i2c-2 -> ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-2
lrwxrwxrwx. 1 root root 0 Oct 14 22:02 i2c-3 -> ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-3
lrwxrwxrwx. 1 root root 0 Oct 14 22:02 i2c-4 -> ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/i2c-4
lrwxrwxrwx. 1 root root 0 Oct 14 22:02 i2c-5 -> ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/card1-eDP-1/i2c-5
lrwxrwxrwx. 1 root root 0 Oct 14 22:02 i2c-6 -> ../../../devices/pci0000:00/0000:00:08.1/0000:04:00.0/drm/card1/card1-DP-1/i2c-6
lrwxrwxrwx. 1 root root 0 Oct 14 22:03 i2c-7 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-7
lrwxrwxrwx. 1 root root 0 Oct 14 22:03 i2c-8 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-8
lrwxrwxrwx. 1 root root 0 Oct 14 22:03 i2c-9 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-9
lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-ELAN066C:00 -> ../../../devices/platform/AMDI0010:01/i2c-1/i2c-ELAN066C:00
lrwxrwxrwx. 1 root root 0 Oct 14  2023 i2c-ELAN238E:00 -> ../../../devices/platform/AMDI0010:00/i2c-0/i2c-ELAN238E:00

# ls -l /sys/bus/acpi/devices/ELAN066C:00/
total 0
-r--r--r--. 1 root root 4096 Oct 14 22:10 hid
-r--r--r--. 1 root root 4096 Oct 14 22:10 modalias
-r--r--r--. 1 root root 4096 Oct 14 22:10 path
lrwxrwxrwx. 1 root root    0 Oct 14 22:10 physical_node -> ../../../../platform/AMDI0010:01/i2c-1/i2c-ELAN066C:00
drwxr-xr-x. 2 root root    0 Oct 14 22:10 power
-r--r--r--. 1 root root 4096 Oct 14 22:10 status
lrwxrwxrwx. 1 root root    0 Oct 14  2023 subsystem -> ../../../../../bus/acpi
-rw-r--r--. 1 root root 4096 Oct 14  2023 uevent
drwxr-xr-x. 3 root root    0 Oct 14  2023 wakeup

Is there some way we can get a fix in the kernel for this buggy ACPI table or should I be asking Lenovo for a fix?

Thanks again,

Jonathan




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux