This fix the issue with my Elantech Touchpad on FreeBSD in my Lenovo Thinkpad 6G
The motherboard supports several touchpad models (Synaptics, Elan, ...)
Consequently, the firmware defers the selection until runtime:
- the _INI method queries the embedded controller (EC),
- determines the actual model installed
- writes the correct _HID and I²C address to the namespace
If the _INI method does not complete execution, _HID remains XXXX0000 and BADR remains zero
The issue is due to a wrong ECDT Namepath:
Dumping the ECDT table
% sudo acpidump -b -n ECDT && iasl -d ecdt.dat
% grep Namepath ecdt.dsl
Namepath : "_SB.PC00.LPCB.EC0"
This change forces to use resolve the device relativelly to the root object instead of
relying on ECDT Namepath correctness. This change doesnt seem to affect other devices.