Hello Dell kernel people, I recently started using a Latitude E7470 (with BIOS version 1.4.2) as my primary machine and have found that the touchpad seems to come up as a standard emulated PS/2 device. input: ImPS/2 BYD TouchPad as /devices/platform/i8042/serio1/input/input6 Sadly simply blacklisting psmouse doesn't resolve this. I found this rather surprising for this to be the case with such modern hardware and have grown used to having a functional touchpad so I started to do some digging. I started by dumping the machine's DSDT [1] to find that the touchpad's I2C interface appears to be conditional [2] on some embedded controller state exposed to the system via the SDS0 field of the GNVS OpRegion (which appears to be 0 on my system). I have verified the values of OSYS (which is 0x07df on my machine) and SDM0 (which is 0x1), so SDS0 seems as though the only remaining barrier to having the i2c-hid touchpad properly exposed in the ACPI tables is SDS0. So, does anyone know what might influence the value of SDS0 provided by the EC? Any help would be greatly appreciated. Cheers, - Ben [1] https://github.com/bgamari/dell-e7470-dsdt [2] _INI method for the TPD0: Method (_INI, 0, NotSerialized) // _INI: Initialize { // Verify that we have at least Windows 2012 If ((OSYS < 0x07DC)) // OSYS == 0x07df on my machine { SRXO (GPDI, One) } // GPIO number and interrupt number of GPDI pin? INT1 = GNUM (GPDI) INT2 = INUM (GPDI) If ((SDM0 == Zero)) // SDM0 == 1 on my machine { SHPO (GPDI, One) } If ((SDS0 == One)) // SDS0 == 0 on my machine { _HID = "SYNA2393" // I guess this is some Synaptics touchpad? HID2 = 0x20 Return (Zero) } If ((SDS0 == 0x02)) { _HID = "06CB2846" // Some other vendor's touchpad? HID2 = 0x20 Return (Zero) } If ((SDS0 == 0x05)) { _HID = "CUST0001" // ??? HID2 = TPDH /* \TPDH */ BADR = TPDB /* \TPDB */ If ((TPDS == Zero)) { SPED = 0x000186A0 } If ((TPDS == One)) { SPED = 0x00061A80 } If ((TPDS == 0x02)) { SPED = 0x000F4240 } Return (Zero) } // DSDT bug: Seems like this really ought to return a value since // otherwise the specification defines the behavior is undefined }
Attachment:
signature.asc
Description: PGP signature