This is _REG for I2C device: Scope (_SB.PCI0.I2C0) { .. Method (_REG, 2, NotSerialized) // _REG: Region Availability { If (((Arg0 == 0x09) && (Arg1 == One))) { If ((ICBM == One)) { Name (LBUF, Buffer (0x03) { 0x00, 0x00, 0x00 // ... }) CreateByteField (LBUF, Zero, LSTS) CreateByteField (LBUF, 0x02, LDAT) LBUF = SHID /* \_SB_.PCI0.I2C0.SHID */ If ((LSTS == Zero)) { If ((LDAT == 0x1E)) { TPVD = 0x4E } If ((LDAT == Zero)) { TPVD = 0x53 } } LBUF = EHID /* \_SB_.PCI0.I2C0.EHID */ If ((LSTS == Zero)) { TPVD = 0x45 } } } } And the touchpad under it requires _REG to return a valid _STA: Method (_STA, 0, NotSerialized) // _STA: Status { If ((TPVD == 0x53)) { Return (0x0F) } Return (Zero) } For some reason _REG doesn't get evaluated at initialization time, I guess it's due to lip 03 12:45:41 lenovo-mrozwod kernel: ACPI BIOS Error (bug): AE_AML_PACKAGE_LIMIT, Index (0x0000000FF) is beyond end of object (length 0x10) (20200528/exoparg2-393)
ACPI dump: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1885573/+attachment/5389147/+files/acpidump.txt Mainline kernel log: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1885573/+attachment/5389364/+files/journalctl-mainline.txt
@Erik, can you please take a look at this?
Fixed by "21653a4181ff292480599dad996a2b759ccf050f i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()"