Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Recently I bought a Lenovo laptop 300w gen 3 (82J1). This computer comes with Windows pre-installed. When testing the computer with a live usb, I soon noticed that the touchpad was not working. I tested several distros, and in none the touchpad worked. I then installed Debian Sid, preserving the original Windows installation.
My first suspicion was that with a BIOS update the problem would be solved. I installed the latest version (GACN43WW) and disabled Secure Boot, Fast Boot, etc. None of it worked.
As you can see, lspci and lsusb do not list the touchpad (ELAN0642):
Code:
lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 7
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8822CE 802.11ac PCIe Wireless Network Adapter
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] (rev e9)
02:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller
02:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
02:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raven2 USB 3.1
02:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor
02:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller
02:00.7 Non-VGA unclassified device: Advanced Micro Devices, Inc. [AMD] Sensor Fusion Hub
Code:
lsusb
Bus 002 Device 003: ID 0bda:0316 Realtek Semiconductor Corp. Card Reader
Bus 002 Device 002: ID 0bc2:2322 Seagate RSS LLC SRD0NF1 Expansion Portable (STEA)
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 30c9:0028 Luxvisions Innotech Limited Integrated Camera
Bus 001 Device 003: ID 0bda:c123 Realtek Semiconductor Corp. Bluetooth Radio
Bus 001 Device 002: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
I tried adding parameters to the kernel boot that in many cases worked for similar laptops (Lenovo Ideapad). I tried several (pci=nocrs, i8042.nopnp=1, i8042.nomux=1, i8042.reset), but nothing worked.
During boot, before systemd starts, an acpi interface error message appears on the screen. Using journalctl, the following appears:
Code:
Jan 27 14:24:08 kernel: ACPI BIOS Error (bug): Failure creating named object [\CDAT], AE_ALREADY_EXISTS (20220331/dsfield-637)
Jan 27 14:24:08 kernel: ACPI Warning: NsLookup: Type mismatch on CDAT (Integer), searching for (RegionField) (20220331/nsaccess-696)
Jan 27 14:24:08 kernel: ACPI: 9 ACPI AML tables successfully acquired and loaded
Jan 27 14:24:08 kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
I don't know if this error is related to the problem with the touchpad, but it seems to me that it is.
The kernel module responsible for the touchpad should be elan_i2c. Using modinfo elan_i2c, the following appears:
I noticed that the touchpad hid is not listed in the module. I then downloaded kernel 6.1.8, edited /linux-6.1.8/include/linux/input/elan-i2c-ids.h, which lists the devices, inserting hid ELAN0642, and compiled.
The touchpad didn't work, but the acpi error message changed to ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-95), which I think is a bug with the Display Port USB-C
Building on what has been done here and here, I've disassembled the acpi table to look for mentions of the touchpad. I found the following entry:
Using Windows to discover the devices may need to be looked at. This is where I'd start. Find a working install then discover how it works.
I get the feeling that the device is on a daughter board. Also in this deal is you mentioned uefi. That brings me to question the usb drive type like uhci or ohci or xhci. Then it makes me question if the way you are booting allows this device in the uefi mode or legacy mode.
Unless the bios errata exactly says it fixes this issue then I'd tend to avoid it. I might be temped to update if I wasn't worried about bricking the thing.
The acpi could be an issue if it is blocking resources you need but in this case I currently doubt it.
"
Compute Express Link (CXL) and other industry standard coherent interconnects enable coherent
switches, coherent memory devices or coherent accelerator devices to be attached to one or more
processors." Then we are back to uefi
Thanks for the reply! On Windows the touchpad is connected to the AMD I2C interface. I got some information from the Device Manager:
Code:
Device description
ELAN pointing device
Device instance path
HID\ELAN0642&COL01\4&2E996A7F&0&0000
Hardware Ids
HID\VEN_ELAN&DEV_0642&Col01
HID\ELAN0642&Col01
HID\*ELAN0642&Col01
HID\VID_04F3&UP:0001_U:0002
HID_DEVICE_SYSTEM_MOUSE
HID_DEVICE_UP:0001_U:0002
HID_DEVICE
Capabilities
000000A0
CM_DEVCAP_SILENTINSTALL
CM_DEVCAP_SURPRISEREMOVALOK
Status
0180200A
DN_DRIVER_LOADED
DN_STARTED
DN_DISABLEABLE
DN_NT_ENUMERATOR
DN_NT_DRIVER
Problem code
00000000
Config flags
00000000
Class
Mouse
Class guid
{4d36e96f-e325-11ce-bfc1-08002be10318}
Inf name
oem41.inf
Driver date
9/23/2020
Driver version
27.4.10.3
Provider
ELAN
Inf section
ETD_HID_PTP_WIN10_Group1_Inst
Included infs
msmouse.inf
Matching device Id
HID\VEN_ELAN&DEV_0642&Col01
Rank of driver
00F90000
Service
mouhid
Upper filters
ETD
Address
00000001
Base container Id
{00000000-0000-0000-ffff-ffffffffffff}
Bus number
00000001
Bus type Guid
{eeaf37d0-1963-47c4-aa48-72476db7cf49}
Configuration Id
oem41.inf:HID\VEN_ELAN&DEV_0642&Col01,ETD_HID_PTP_WIN10_Group1_Inst
Container Id
{00000000-0000-0000-ffff-ffffffffffff}
Device stack
\Driver\mouclass
\Driver\ETD
\Driver\mouhid
\Driver\mshidkmdf
Display name
ELAN pointing device
Driver description
ELAN pointing device
Driver key
{4d36e96f-e325-11ce-bfc1-08002be10318}\0000
Driver node strong name
oem41.inf:4777d1a3604f6974:ETD_HID_PTP_WIN10_Group1_Inst:27.4.10.3:HID\VEN_ELAN&DEV_0642&Col01
Enumerator
HID
First install date
12/25/2021 3:22:44 AM
Has problem
<false>
In root container
<true>
Install date
12/25/2021 3:27:32 AM
Install state
00000000
Is connected
<true>
Is present
<true>
Is reboot required
<false>
Last arrival date
1/29/2023 8:05:13 PM
Last known parent
ACPI\ELAN0642\3&31ff937c&1
Legacy bus type
0000000F
Manufacturer
ELAN
Parent
ACPI\ELAN0642\3&31ff937c&1
Physical device object name
\Device\0000004f
Power data
Current power state:
D0
Power capabilities:
00000009
PDCAP_D0_SUPPORTED
PDCAP_D3_SUPPORTED
Power state mappings:
S0 -> D0
S1 -> Unspecified
S2 -> Unspecified
S3 -> D3
S4 -> D3
S5 -> D3
Removal policy
00000001
Removal policy default
00000001
Reported device Ids hash
1AD58B6D
Rollback driver node strong name
msmouse.inf:c67c9e42728cee7a:HID_Mouse_Inst.NT:10.0.19041.1:HID_DEVICE_SYSTEM_MOUSE
Safe removal required
<false>
Siblings
HID\ELAN0642&Col02\4&2e996a7f&0&0001
HID\ELAN0642&Col03\4&2e996a7f&0&0002
HID\ELAN0642&Col04\4&2e996a7f&0&0003
Class default service
i8042prt
Class description
Mouse
Class icon path
%SystemRoot%\System32\setupapi.dll,-2
Class name
Mice and other pointing devices
Class upper filters
mouclass
Display name
Mice and other pointing devices
No install class
<true>
I got some info from the Windows driver too:
Code:
;============================================================================
; Installation file (.inf) for Windows 10.
;
; All Rights Reserved, Copyright(C) ELAN Microelectronics Corp. 2003-2020
;============================================================================
[Version]
Signature="$Windows NT$"
Provider=%VenderName%
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}
Class=Mouse
CatalogFile=ETD.cat
DriverVer=09/23/2020, 27.4.10.3
[SourceDisksNames]
1=%DiskName%,,
[SourceDisksFiles]
ETD.sys = 1
ETDCtrl.exe = 1
ETDApix.dll = 1
ETDCmds.dll = 1
ETDService.exe = 1
ETDUn_inst.exe = 1
;----------------------------------------------------------------------------
; Manufacturer Sections
;----------------------------------------------------------------------------
[Manufacturer]
%VenderName% = ELAN.Mfg, NTamd64, NTamd64.10.0
[ELAN.Mfg.NTamd64]
[ELAN.Mfg.NTamd64.10.0]
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group2_Inst, HID\VEN_ELAN&DEV_0660&Col01 ; ClickPad for Capela 14e Windows
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group1_Inst, HID\VEN_ELAN&DEV_0661&Col01 ; ClickPad for Windows 100e/300e
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group3_Inst, HID\VEN_ELAN&DEV_066C&Col01 ; ClickPad for 100e/300e AMD Pollock
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group1_Inst, HID\VEN_ELAN&DEV_066E&Col01 ; ClickPad for 100W&300W Gen3 AMD Pollock
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group1_Inst, HID\VEN_ELAN&DEV_066F&Col01 ; ClickPad for 300W Gen3 Intel JasperLake
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group1_Inst, HID\VEN_ELAN&DEV_0641&Col01 ; ClickPad for 14W
%ELANHIDDeviceDesc% = ETD_HID_PTP_WIN10_Group1_Inst, HID\VEN_ELAN&DEV_0642&Col01 ; ClickPad for 100W/300W AMD Pollock
;----------------------------------------------------------------------------
; Install Sections
;----------------------------------------------------------------------------
[DestinationDirs]
DefaultDestDir = 12 ; Driver directory
ETDSys.CopyFiles = 12 ; Driver directory
ETDApp.CopyFiles = 11 ; System directory
[ETD_Service_Inst]
DisplayName = %PS2DeviceDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 0 ; SERVICE_ERROR_IGNORE
ServiceBinary = %12%\ETD.sys
LoadOrderGroup = Pointer Port
[ETD_APP_Service_Inst]
DisplayName = "ELAN Service"
ServiceType = 0x00000010 ; SERVICE_WIN32_OWN_PROCESS
StartType = 0x00000002 ; SERVICE_AUTO_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %11%\ETDService.exe
;LoadOrderGroup = "" ; System determines automatically
;----------------------------------------------------------------------------
; Common File Copy and Registry Operations
;----------------------------------------------------------------------------
[ETDSys.CopyFiles]
ETD.sys,,,0x00000001
[ETDApp.CopyFiles]
ETDCtrl.exe,,,0x00004000
ETDApix.dll,,,0x00004000
ETDCmds.dll,,,0x00004000
ETDService.exe,,,0x00000001
ETDUn_inst.exe,,,0x00004000
;----------------------------------------------------------------------------
[ETD_HID_PTP_WIN10_Inst]
FeatureScore=F9
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT
CopyFiles=ETDSys.CopyFiles, ETDApp.CopyFiles
AddReg=ETD_HID_System_Win10.AddReg, ETD_HID_HKR_OtherSetting.AddReg
CopyINF=ETDHCF.inf
Reboot
[ETD_HID_PTP_WIN10_Inst.Services]
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT.Services
AddService = ETD,0x00000000, ETD_Service_Inst
AddService = ETDService,0x00000800, ETD_APP_Service_Inst
[ETD_HID_PTP_WIN10_Inst.HW]
AddReg = ETD_AddReg.HW
[ETD_HID_PTP_WIN10_Inst.Wdf]
KmdfService = ETD, HIDDevice_WdfSect
;----------------------------------------------------------------------------
[ETD_HID_PTP_WIN10_Group1_Inst]
FeatureScore=F9
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT
CopyFiles=ETDSys.CopyFiles, ETDApp.CopyFiles
AddReg=ETD_HID_System_Win10.AddReg, ETD_HID_HKR_OtherSetting_Group1.AddReg
CopyINF=ETDHCF.inf
Reboot
[ETD_HID_PTP_WIN10_Group1_Inst.Services]
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT.Services
AddService = ETD,0x00000000, ETD_Service_Inst
AddService = ETDService,0x00000800, ETD_APP_Service_Inst
[ETD_HID_PTP_WIN10_Group1_Inst.HW]
AddReg = ETD_AddReg.HW
[ETD_HID_PTP_WIN10_Group1_Inst.Wdf]
KmdfService = ETD, HIDDevice_WdfSect
;----------------------------------------------------------------------------
[ETD_HID_PTP_WIN10_Group2_Inst]
FeatureScore=F9
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT
CopyFiles=ETDSys.CopyFiles, ETDApp.CopyFiles
AddReg=ETD_HID_System_Win10.AddReg, ETD_HID_HKR_OtherSetting_Group2.AddReg
CopyINF=ETDHCF.inf
Reboot
[ETD_HID_PTP_WIN10_Group2_Inst.Services]
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT.Services
AddService = ETD,0x00000000, ETD_Service_Inst
AddService = ETDService,0x00000800, ETD_APP_Service_Inst
[ETD_HID_PTP_WIN10_Group2_Inst.HW]
AddReg = ETD_AddReg.HW
[ETD_HID_PTP_WIN10_Group2_Inst.Wdf]
KmdfService = ETD, HIDDevice_WdfSect
;----------------------------------------------------------------------------
[ETD_HID_PTP_WIN10_Group3_Inst]
FeatureScore=F9
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT
CopyFiles=ETDSys.CopyFiles, ETDApp.CopyFiles
AddReg=ETD_HID_System_Win10.AddReg, ETD_HID_HKR_OtherSetting_Group3.AddReg
CopyINF=ETDHCF.inf
Reboot
[ETD_HID_PTP_WIN10_Group3_Inst.Services]
Include = msmouse.inf
Needs = HID_Mouse_Inst.NT.Services
AddService = ETD,0x00000000, ETD_Service_Inst
AddService = ETDService,0x00000800, ETD_APP_Service_Inst
[ETD_HID_PTP_WIN10_Group3_Inst.HW]
AddReg = ETD_AddReg.HW
[ETD_HID_PTP_WIN10_Group3_Inst.Wdf]
KmdfService = ETD, HIDDevice_WdfSect
;----------------------------------------------------------------------------
; Entry point for Uninstallation.
; This section is executed as part of Uninstallation.
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
; Uninstall Section
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
; System Section
;----------------------------------------------------------------------------
[ETD_HID_System_Win10.AddReg]
HKLM,%ServiceRoot%"\Elantech",Version,%REG_SZ%,"%DriverVersion%"
HKLM,%ServiceRoot%"\Elantech",DriverVersion,%REG_SZ%,"ELAN Touchpad %DriverVersion%_HIDI2C_%DriverBit%_%DriverVersionExtend%"
HKLM,%ServiceRoot%"\Elantech",ScreenOrientation,%REG_DWORD%,0
;----------------------------------------------------------------------------
; DeviceInfo Section
;----------------------------------------------------------------------------
[ETD_HID_HKR_OtherSetting.AddReg]
HKR,"OtherSetting",DetectTouchPadSMBusProtocol,%REG_DWORD%,0 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",DetectTouchPadI2CProtocol,%REG_DWORD%,1 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",LidStatusControlFunction_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",LidStatusNotifyFW_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",CustomerDefinition,%REG_DWORD%,8
HKR,"OtherSetting",ToggleFunction_Enable,%REG_DWORD%,0 ; Toggle Function Key Enable
HKR,"OtherSetting",ToggleScanCode,%REG_DWORD%,0xE073 ; Toggle Scan Code
HKR,"OtherSetting",SwitchFunction_Enable,%REG_DWORD%,0 ; Switch Function Key Enable
HKR,"OtherSetting",Switch_On_Key,%REG_DWORD%,0xE03E ; Switch On Key
HKR,"OtherSetting",Switch_Off_Key,%REG_DWORD%,0xE03F ; Switch Off Key
HKR,"OtherSetting",ShowTopIconWhenDeviceOnOff,%REG_DWORD%,0
HKR,"OtherSetting",PTPChangeStatusByLidControl,%REG_DWORD%,0
[ETD_HID_HKR_OtherSetting_Group1.AddReg]
HKR,"OtherSetting",DetectTouchPadSMBusProtocol,%REG_DWORD%,0 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",DetectTouchPadI2CProtocol,%REG_DWORD%,1 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",LidStatusControlFunction_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",LidStatusNotifyFW_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",CustomerDefinition,%REG_DWORD%,8
HKR,"OtherSetting",ToggleFunction_Enable,%REG_DWORD%,0 ; Toggle Function Key Enable
HKR,"OtherSetting",ToggleScanCode,%REG_DWORD%,0xE073 ; Toggle Scan Code
HKR,"OtherSetting",SwitchFunction_Enable,%REG_DWORD%,1 ; Switch Function Key Enable
HKR,"OtherSetting",Switch_On_Key,%REG_DWORD%,0x62 ; Switch On Key
HKR,"OtherSetting",Switch_Off_Key,%REG_DWORD%,0x63 ; Switch Off Key
HKR,"OtherSetting",Send97CommandEnable,%REG_DWORD%,0
HKR,"OtherSetting",ShowTopIconWhenDeviceOnOff,%REG_DWORD%,0
HKR,"OtherSetting",HardwareID,%REG_DWORD%,0x0600
HKR,"OtherSetting",PTPChangeStatusByLidControl,%REG_DWORD%,1
[ETD_HID_HKR_OtherSetting_Group2.AddReg]
HKR,"OtherSetting",DetectTouchPadSMBusProtocol,%REG_DWORD%,0 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",DetectTouchPadI2CProtocol,%REG_DWORD%,1 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",LidStatusControlFunction_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",LidStatusNotifyFW_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",CustomerDefinition,%REG_DWORD%,8
HKR,"OtherSetting",ToggleFunction_Enable,%REG_DWORD%,1 ; Toggle Function Key Enable
HKR,"OtherSetting",ToggleScanCode,%REG_DWORD%,0xE073 ; Toggle Scan Code
HKR,"OtherSetting",SwitchFunction_Enable,%REG_DWORD%,0 ; Switch Function Key Enable
HKR,"OtherSetting",Switch_On_Key,%REG_DWORD%,0x62 ; Switch On Key
HKR,"OtherSetting",Switch_Off_Key,%REG_DWORD%,0x63 ; Switch Off Key
HKR,"OtherSetting",EC_Notify_Enable,%REG_DWORD%,1
HKR,"OtherSetting",EC_Notify_Inhibit_WhenForceEnable,%REG_DWORD%,0 ; Send cmd after force enable
HKR,"OtherSetting",EC_Notify_On_Port,%REG_DWORD%,0x97 ; To 64h
HKR,"OtherSetting",EC_Notify_On_Data,%REG_DWORD%,0x02 ; To 60h
HKR,"OtherSetting",EC_Notify_Off_Port,%REG_DWORD%,0x97 ; To 64h
HKR,"OtherSetting",EC_Notify_Off_Data,%REG_DWORD%,0x01 ; To 60h
HKR,"OtherSetting",Send97CommandEnable,%REG_DWORD%,1
HKR,"OtherSetting",ECChannel,%REG_DWORD%,1
HKR,"OtherSetting",ResumeNeedSend97Command,%REG_DWORD%,1
HKR,"OtherSetting",ShowTopIconWhenDeviceOnOff,%REG_DWORD%,0
HKR,"OtherSetting",HardwareID,%REG_DWORD%,0x0600
HKR,"OtherSetting",PTPChangeStatusByLidControl,%REG_DWORD%,0
[ETD_HID_HKR_OtherSetting_Group3.AddReg]
HKR,"OtherSetting",DetectTouchPadSMBusProtocol,%REG_DWORD%,0 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",DetectTouchPadI2CProtocol,%REG_DWORD%,1 ; 0 = Not Detect, 1 = Detect
HKR,"OtherSetting",LidStatusControlFunction_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",LidStatusNotifyFW_Enable,%REG_DWORD%,1 ; 0: Close Function , 1: Open Function
HKR,"OtherSetting",CustomerDefinition,%REG_DWORD%,8
HKR,"OtherSetting",ToggleFunction_Enable,%REG_DWORD%,0 ; Toggle Function Key Enable
HKR,"OtherSetting",ToggleScanCode,%REG_DWORD%,0xE073 ; Toggle Scan Code
HKR,"OtherSetting",SwitchFunction_Enable,%REG_DWORD%,1 ; Switch Function Key Enable
HKR,"OtherSetting",Switch_On_Key,%REG_DWORD%,0x62 ; Switch On Key
HKR,"OtherSetting",Switch_Off_Key,%REG_DWORD%,0x63 ; Switch Off Key
HKR,"OtherSetting",EC_Notify_Enable,%REG_DWORD%,1
HKR,"OtherSetting",EC_Notify_Inhibit_WhenForceEnable,%REG_DWORD%,0 ; Send cmd after force enable
HKR,"OtherSetting",EC_Notify_On_Port,%REG_DWORD%,0x97 ; To 64h
HKR,"OtherSetting",EC_Notify_On_Data,%REG_DWORD%,0x02 ; To 60h
HKR,"OtherSetting",EC_Notify_Off_Port,%REG_DWORD%,0x97 ; To 64h
HKR,"OtherSetting",EC_Notify_Off_Data,%REG_DWORD%,0x01 ; To 60h
HKR,"OtherSetting",Send97CommandEnable,%REG_DWORD%,0
HKR,"OtherSetting",Send97CommandEnableWhenInit,%REG_DWORD%,1
HKR,"OtherSetting",ShowTopIconWhenDeviceOnOff,%REG_DWORD%,0
HKR,"OtherSetting",HardwareID,%REG_DWORD%,0x0600
HKR,"OtherSetting",PTPChangeStatusByLidControl,%REG_DWORD%,1
HKR,"OtherSetting",LidCloseBeforeD0Exit,%REG_DWORD%,1
HKR,"OtherSetting",ECChannel,%REG_DWORD%,2
[ETD_AddReg.HW]
HKR,,"UpperFilters",0x00010000,"ETD"
[HIDDevice_WdfSect]
KmdfLibraryVersion = 1.11
;----------------------------------------------------------------------------
; String Table
;----------------------------------------------------------------------------
[Strings]
PS2DeviceDesc = "ELAN PS/2 Port Input Device"
ELANHIDDeviceDesc = "ELAN pointing device"
Publisher = "ELAN Microelectronic Corp."
TargetDir = "Elantech"
NewTargetDir = "NewElantech"
DiskName = "ETDWare Driver Disk"
VenderName = "ELAN"
ServiceRoot = "System\CurrentControlSet\Control"
; Registry Type
REG_EXPAND_SZ = 0x00020000
REG_DWORD = 0x00010001
REG_MULTI_SZ = 0x00010000
REG_BINARY = 0x00000001
REG_SZ = 0x00000000
; ELAN Driver Information
ELANStringName = "ELAN Input Device Driver"
ThinkPadStringName = "ThinkPad UltraNav Driver"
ThinkPadStringNameNew = "ELAN pointing device"
LenovoStringName = "ELAN pointing device"
ELANProgamName = "ELAN Pointing Driver"
DriverDate = "09/23/2020"
DriverVersion = "27.4.10.3"
DriverBit = "X64"
DriverVersionExtend = "WHQL" ; Beta or WHQL
I am not familiar with UEFI modification. The Legacy BIOS option has been blocked by Lenovo. I don't know if it is because of Intel's decision to no longer support this type of BIOS or if it is because of an agreement with Microsoft, which has occurred in the past, to block BIOS options that are not of interest to the company. In any case, I think Ryzen chips still support legacy boot.
I am not sure how the BIOS would block touchpad detection. When running the command "sudo i2cdetect -l", nothing is detected, which suggests to me that it might be a problem with AMD's i2c interface. Anyway, I am a bit lost amidst so many questions.
My hypothesis at the moment is that a bug in the acpi table is preventing the touchpad and the i2c interface from operating correctly. The evidence that leads me to this conclusion is the fact that the i2c interface is not working properly (the command 'sudo i2cdetect -l' produces no output) and a critical bug in the acpi interface is in the CDAT structure. Examining the DSDT table I noticed that the only mentions of CDAT are in the touchpad description.
Using the fwts tool, I got the following output:
Code:
klog: Scan kernel log for errors and warnings.
--------------------------------------------------------------------------------
Test 1 of 1: Kernel log error check.
FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel message: [ 0.256849] ACPI
Warning: NsLookup: Type mismatch on CDAT (Integer), searching for (RegionField)
(20220331/nsaccess-696)
ADVICE: ACPI AML interpreter has found some non-conforming AML code. This should
be investigated and fixed.
So I think that if the bug in this table is discovered and fixed, probably either the problem will be solved, or it can be solved with simpler measures.
I believe that the bug is in this part of the table:
"Similar to how a RAID driver takes disk objects and assembles them into a new logical device, the CXL subsystem is tasked to take PCIe and ACPI objects and assemble them into a CXL.mem decode topology. The need for runtime configuration of the CXL.mem topology is also similar to RAID in that different environments with the same hardware configuration may decide to assemble the topology in contrasting ways."
Luckily for me, and for people who have devices running on newly implemented interfaces, some Intel engineers are working to implement CXL RAM support for the next kernel release (6.3), as reported at https://www.phoronix.com/news/CXL-RAM-Region-Linux-6.3 .
According to Dan Williams, the engineer working on it,
Quote:
CXL drivers need various data which are provided through generic DOE mailboxes
as defined in the PCIe 6.0 spec.[1]
One such data is the Coherent Device Attribute Table (CDAT). CDAT data provides
coherent information about the various devices in the system. It was developed
because systems no longer have a priori knowledge of all coherent devices
within a system. CDAT describes the coherent characteristics of the
components on the CXL bus separate from system configurations. The OS can
then, for example, use this information to form correct interleave sets.
To begin reading the CDAT the OS must have support to access the DOE mailboxes
provided by the CXL devices.
My knowledge in this area is very limited, but basically, from what I can understand, until CXL Data Object Exchange (CXL DOE Mailbox) support is properly implemented in the kernel, it will be difficult to make this device work out of the box.
In the meantime, I will keep trying to make the device work in other ways, not least because I might be wrong about this CDAT issue. I would appreciate it very much if someone who understands the subject could clarify the matter.
Okay, I have studied a little more about the problem, and it seems to me that a considerable part of the problem is a firmware bug. Reading the ACPI table it became very clear to me that there are strange things in this code, like undeclared objects, etc.
This CDAT error is a syntax error, as I could find out with the acpica utility compiler (iasl). So what I can say is that the Lenovo engineers wrote bad code and did not even bother to test the computer they produced.
Windows performs horribly on this laptop. When compared to the performance of any linux distribution, Windows looks like the purest bloatware.
It annoys me to have to redo the half-baked work of software engineers. I am not qualified for this and have to spend many hours studying to solve the problem. I know, freedom has its price, and the price we pay to use GNU/Linux on our machines is sometimes to have to take an informal degree in computer science. But still, it makes me sad and outraged to see the amount of shoddy work done by multi-billion dollar companies. At the end of the day, we are the ones who get screwed.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.