At last I have a working touchpad on my Lenovo ThinkBook 15 IIL!! :)

Ubuntu 20.04
Kernel: 5.4.0-42-generic

Steps to fix:

Do it as root:
$ sudo su
# apt update
# apt install acpidump iasl cpio
# cd /tmp

Get and disassemble the original acpi table:
  # acpidump -b
  # iasl -d dsdt.dat

Edit /tmp/dsdt.dsl:
 - Search the HID of the touch pad: ELAN0634
 - Search the next _STA method declaration (line 38922 in my case) and comment 
out these four lines:

  Method (_STA, 0, NotSerialized)  // _STA: Status
  {
      //If ((TPVD == 0x45))
      //{
          Return (0x0F)
      //}
      //Return (Zero)
  }

Probably the kernel calls the _STA method before the _REG method, so the
TPVD not yet initialized here.

Increment the version number. It’s the last parameter of the DefinitionBlock 
(line 21 for me):
  DefinitionBlock ("", "DSDT", 2, "LENOVO", "ICL     ", 0x20170002)

Compile the dsl file:
  # iasl -sa dsdt.dsl

Create initrd archive:
  # mkdir -p kernel/firmware/acpi
  # mv dsdt.aml kernel/firmware/acpi
  # find kernel | cpio -H newc --create > /boot/acpi_fixed.cpio

Unfortunately the GRUB_EARLY_INITRD_LINUX_CUSTOM parameter in the
/etc/default/grub config file results in a messy output and non booting
system, so we need to create a custom script in /etc/grub.d directory
instead.

create and edit: /etc/grub.d/50_acpi_patch
copy these lines into it:

  #!/bin/sh
  sed -i -E 's/^(\s+initrd\s+)(.*)$/\1\/acpi_fixed.cpio \2/g' 
/boot/grub/grub.cfg.new

Make it executable:
  # chmod +x /etc/grub.d/50_acpi_patch

Update grub config:
  # update-grub

Edit /etc/modprobe.d/blacklist.conf. Add these lines to the end of the
file:

  #Allow module elan_i2c to control the touch pad
  blacklist i2c_hid

Reboot:
  # reboot

Be happy!

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-oem-5.6 in Ubuntu.
https://bugs.launchpad.net/bugs/1861610

Title:
  'Elan touchpad' not detected on 'Lenovo ThinkBook 15 IIL'

Status in linux package in Ubuntu:
  Fix Released
Status in linux-oem-5.6 package in Ubuntu:
  Fix Released
Status in linux-oem-osp1 package in Ubuntu:
  Invalid
Status in linux source package in Bionic:
  Fix Released
Status in linux-oem-5.6 source package in Bionic:
  Invalid
Status in linux-oem-osp1 source package in Bionic:
  Fix Released
Status in linux source package in Eoan:
  Fix Released
Status in linux-oem-5.6 source package in Eoan:
  Invalid
Status in linux-oem-osp1 source package in Eoan:
  Fix Released
Status in linux source package in Focal:
  Fix Released
Status in linux-oem-5.6 source package in Focal:
  Fix Released
Status in linux-oem-osp1 source package in Focal:
  Invalid

Bug description:
  [SRU Justification]

  [Impact]
  Touchpad function unavailable on some platforms with new ELAN touchpad
  HIDs.

  [Fix]
  
https://lore.kernel.org/linux-input/000201d5a8bd$9fead3f0$dfc07bd0$@emc.com.tw/
  required to match these currently unsupported IDs.

  [Test Case]
  1. check if platform is affected, e.g. with ELAN0634:

     $ sudo acpidump | grep -C3 ELAN
     2A060: 49 4E 54 31 70 0A 20 49 44 41 44 A4 84 53 42 46 INT1p.IDAD..SBF
     2A070: 53 53 42 46 49 00 5B 82 42 0E 54 50 44 32 08 5F SSBFI.[.B.TPD2._
     2A080: 41 44 52 00 08 49 44 41 44 00 08 48 49 44 32 00 ADR..IDAD..HID2.
     2A090: 08 5F 48 49 44 0D 45 4C 41 4E 30 36 33 34 00 08 ._HID.ELAN0634..
     2A0A0: 5F 43 49 44 0D 50 4E 50 30 43 35 30 00 08 5F 55 _CID.PNP0C50.._U
     2A0B0: 49 44 01 14 4B 04 5F 44 53 4D 04 A0 3C 93 68 11 ID..K._DSM..<.h.
     2A0C0: 13 0A 10 F7 F6 DF 3C 67 42 55 45 AD 05 B3 0A 3D ......<gBUE....=

  2. check if touchpad then appear in /proc/bus/input/devices when
  applied.

  [Regression Potential]
  Low. Only add new IDs for currently unsupported platforms.

  ========== Original Bug Description ==========

  The Elan touchpad on my Lenovo Thinkbook isn't being detected, and
  hence isn't working.

  `sudo acpidump | grep -C3 ELAN` gives me the device's ACPI id:

  ```bash
  ghosthawkzero@EchelonV:~$ sudo acpidump | grep -C3 ELAN
     2A060: 49 4E 54 31 70 0A 20 49 44 41 44 A4 84 53 42 46  INT1p. IDAD..SBF
     2A070: 53 53 42 46 49 00 5B 82 42 0E 54 50 44 32 08 5F  SSBFI.[.B.TPD2._
     2A080: 41 44 52 00 08 49 44 41 44 00 08 48 49 44 32 00  ADR..IDAD..HID2.
     2A090: 08 5F 48 49 44 0D 45 4C 41 4E 30 36 33 34 00 08  ._HID.ELAN0634..
     2A0A0: 5F 43 49 44 0D 50 4E 50 30 43 35 30 00 08 5F 55  _CID.PNP0C50.._U
     2A0B0: 49 44 01 14 4B 04 5F 44 53 4D 04 A0 3C 93 68 11  ID..K._DSM..<.h.
     2A0C0: 13 0A 10 F7 F6 DF 3C 67 42 55 45 AD 05 B3 0A 3D  ......<gBUE....=
  ghosthawkzero@EchelonV:~$
  ```

  Have attached the content from /proc/bus/input/devices.

  **EXPECTED** - touchpad to work

  **WHAT IS HAPPENING** - touchpad not detected and touchpad not
  working.

  More info:

  LSB release:
  ```bash
  ghosthawkzero@EchelonV:~$ lsb_release -rd
  Description:  Ubuntu 19.10
  Release:      19.10
  ghosthawkzero@EchelonV:~$
  ```

  ProblemType: Bug
  DistroRelease: Ubuntu 19.10
  Package: linux-image-5.3.0-29-generic 5.3.0-29.31
  ProcVersionSignature: Ubuntu 5.3.0-29.31-generic 5.3.13
  Uname: Linux 5.3.0-29-generic x86_64
  ApportVersion: 2.20.11-0ubuntu8.2
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  ghosthawkzero   1493 F.... pulseaudio
  CurrentDesktop: ubuntu:GNOME
  Date: Sun Feb  2 19:03:29 2020
  InstallationDate: Installed on 2020-01-29 (3 days ago)
  InstallationMedia: Ubuntu 19.10 "Eoan Ermine" - Release amd64 (20191017)
  MachineType: LENOVO 20SM
  ProcFB: 0 i915drmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.3.0-29-generic 
root=UUID=c070ef84-6265-4593-a4c3-b0ceddf7e9b4 ro quiet splash vt.handoff=7
  RelatedPackageVersions:
   linux-restricted-modules-5.3.0-29-generic N/A
   linux-backports-modules-5.3.0-29-generic  N/A
   linux-firmware                            1.183.3
  SourcePackage: linux
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 12/11/2019
  dmi.bios.vendor: LENOVO
  dmi.bios.version: DJCN14WW
  dmi.board.name: LVAC/LVAD
  dmi.board.vendor: LENOVO
  dmi.board.version: SDK0L77769 WIN
  dmi.chassis.type: 10
  dmi.chassis.vendor: LENOVO
  dmi.chassis.version: Lenovo ThinkBook 15-IIL
  dmi.modalias: 
dmi:bvnLENOVO:bvrDJCN14WW:bd12/11/2019:svnLENOVO:pn20SM:pvrLenovoThinkBook15-IIL:rvnLENOVO:rnLVAC/LVAD:rvrSDK0L77769WIN:cvnLENOVO:ct10:cvrLenovoThinkBook15-IIL:
  dmi.product.family: Thinkbook 15-IIL
  dmi.product.name: 20SM
  dmi.product.sku: LENOVO_MT_20SM_BU_idea_FM_Thinkbook 15-IIL
  dmi.product.version: Lenovo ThinkBook 15-IIL
  dmi.sys.vendor: LENOVO

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1861610/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to