I have already installed OS X...
I'm trying to solve the battery problems, power and audio.
What SMBIOS settings do you use for this laptop?
Can u write a dsdt patch guide for this i2c touchpad , ty!VoodooI2C (PCI) works!! Thank you jhax01
Turns out I have 2 I2C controllers:
Code:[ System devices / Intel(R) Serial IO I2C Host Controller - A160 ] Device Properties: Driver Description Intel(R) Serial IO I2C Host Controller - A160 Hardware ID PCI\VEN_8086&DEV_A160&SUBSYS_10801043&REV_31 Location Information PCI bus 0, device 21, function 0 PCI Device Intel Sunrise Point PCH - LPSS: I2C Controller 0 [ System devices / Intel(R) Serial IO I2C Host Controller - A161 ] Device Properties: Driver Description Intel(R) Serial IO I2C Host Controller - A161 Hardware ID PCI\VEN_8086&DEV_A161&SUBSYS_10801043&REV_31 Location Information PCI bus 0, device 21, function 1 PCI Device Intel Sunrise Point PCH - LPSS: I2C Controller 1
device a160 on I2C0 and device a161 on I2C1
The dsdt gave me the clues which one is the correct one:
Code:Scope (_SB.PCI0.I2C1) { Device (ETPD) { Name (SBFB, ResourceTemplate () { I2cSerialBusV2 (0x004C, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PCI0.I2C1", 0x00, ResourceConsumer, _Y34, Exclusive, ) }) Name (SBFI, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) { 0x0000005F, } }) CreateWordField (SBFB, \_SB.PCI0.I2C1.ETPD._Y34._ADR, BADR) // _ADR: Address Name (_ADR, One) // _ADR: Address Method (_HID, 0, NotSerialized) // _HID: Hardware ID { If (ELAN) { Store (0x15, BADR) Return ("ELAN1000") } If (FOLT) { Store (0x15, BADR) Return ("FTE1001") } Return ("ELAN1000") } Name (_CID, "PNP0C50") // _CID: Compatible ID Name (_UID, One) // _UID: Unique ID Name (_S0W, 0x03) // _S0W: S0 Device Wake State Method (_S3W, 0, NotSerialized) // _S3W: S3 Device Wake State { If (LEqual (S0ID, Zero)) { Return (0x03) } Else { Return (Zero) } } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */)) { If (LEqual (Arg2, Zero)) { If (LEqual (Arg1, One)) { Return (Buffer (One) { 0x03 }) } Else { Return (Buffer (One) { 0x00 }) } } If (LEqual (Arg2, One)) { Return (One) } } Else { Return (Buffer (One) { 0x00 }) } } Method (_STA, 0, NotSerialized) // _STA: Status { If (LEqual (TPIF, Zero)) { Return (Zero) } If (And (DSYN, One)) { Return (Zero) } Return (0x0F) } Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { Return (ConcatenateResTemplate (SBFB, SBFI)) } } }
The above code section made it obvious that my ELAN1000 trackpad is Device (ETPD) under I2C1. So I have to use device a161
As suggested, I went into VoodooI2CHIDDevice::initHIDDevice and increased the timeout from 10 to 100ms. Furthermore, in Device (ETPD), I changed Method XDSM to Method _DSM
I now have I2C trackpad fonctionality.
@jhax01 I have a different Asus laptop (N551VW) with pretty much exactly the same specs (I7-6700HQ, GTX 960M) and this touchpad method doesn't seem to work for me at all... my DSDT looks exactly the same as above, my IOReg does as well, My touchpad is also the ELAN1000 located on I2C1 with a161 I changed the timeout to 100ms and the device from 9d60 to a161 but when I load the kext I always get "Unknown synopsys component type: 0xffffffff" any clues?
Did u find out? Let me know plz@jhax01 I have a different Asus laptop (N551VW) with pretty much exactly the same specs (I7-6700HQ, GTX 960M) and this touchpad method doesn't seem to work for me at all... my DSDT looks exactly the same as above, my IOReg does as well, My touchpad is also the ELAN1000 located on I2C1 with a161 I changed the timeout to 100ms and the device from 9d60 to a161 but when I load the kext I always get "Unknown synopsys component type: 0xffffffff" any clues?
Can you share how you can make the trackpad to work? I have Asus A456UR, Skylake and it's also using I2C ELAN1000 Trackpad, but I'm not sure if it's ACPI or PCI. How do I differ this. Thank youOh God. Great find. It appears that your assumption is correct. My I2C bus seems to be PCI enumerated. This VoodooI2CPCI project is closer to working on my laptop.
The readme even specifically mentions support for the "ELAN1000 trackpad (Skylake laptops, e.g. ASUS UX305CA), pci8086,9d60 - Skylake era".
Except that for my Asus Zenbook UX501VW, my I2C controller is pci8086,a160 - not 9d60
After making the device change in the VoodooI2C IONameMatch, IORegistry shows that VoodooI2C loads, but the trackpad is not working. The trackpad setting in System Preferences still tells me "no trackpad found"
do the dsdt path which ben said, and install the voodooi2c.kext , reboot,Can you share how you can make the trackpad to work? I have Asus A456UR, Skylake and it's also using I2C ELAN1000 Trackpad, but I'm not sure if it's ACPI or PCI. How do I differ this. Thank you