Page MenuHomeFreeBSD

For consistency, resolve link devices relative to the root object (/) rather than the ECDT Namepath, which is not always an absolute path.
Needs ReviewPublic

Authored by rodrigo on Mon, Oct 12, 2:38 PM.

Details

Reviewers
olce
Summary

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.

Test Plan

Tested on FreeBSD FreeBSD 15.1-RELEASE-p4
using GENERIC amd64 configuration

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 78065
Build 74948: arc lint + arc unit