Contribute
Register

[WIP] VoodooI2C I2C Trackpad (Limited Support)

Joined
Jun 9, 2013
Messages
71
Mac
  1. MacBook Air
Mobile Phone
  1. Android
this is the Kext I compiled from the suggestions here,
the DSDT was not patched by me, so I can't help about how to patch it, I'm sorry

I compared the dsdts and seems nothing change. And would you show me your devices in IOReg?
 
Joined
Aug 5, 2014
Messages
22
Hi guys.
After new extracted DSDT and patching with INT3442 and INT3443 patches + win10 patch I deleted all LPPS kexts and I disabled my touchscreen with DSDT, I have a trackpad and touchscreen detected (in settings I see new Ink setting for touchscreen and when I unplug my USB mouse, El Capitan sees connected mouse) but it is not working at all. I have ELAN1200 on Skylak laptop. I get errors on MaciASL (name exist in scope) so I deleted these lines. I mean, that problem is on deleting these lines. Can anybody help me? : / my touchscreen and trackpad is on one I2C controller.
(I am sorry for my english)
 
Joined
Jul 26, 2012
Messages
71
Motherboard
Asus Zenbook UX330UA - Clover EFI
CPU
Intel i5-7200U
Graphics
Intel® HD Graphics 620, 1920x1080
Hi guys.
After new extracted DSDT and patching with INT3442 and INT3443 patches + win10 patch I deleted all LPPS kexts and I disabled my touchscreen with DSDT, I have a trackpad and touchscreen detected (in settings I see new Ink setting for touchscreen and when I unplug my USB mouse, El Capitan sees connected mouse) but it is not working at all. I have ELAN1200 on Skylak laptop. I get errors on MaciASL (name exist in scope) so I deleted these lines. I mean, that problem is on deleting these lines. Can anybody help me? : / my touchscreen and trackpad is on one I2C controller.
(I am sorry for my english)

the same problem for me. in IORegister it says that IC2 is elan 1200. but when i´m patching my DSDT it appears de error (name exist in scope).


this is my I2C DSDT entries, i´ve patched I2CO with INT3442 e I2C1 with INT3443. is this correct? it gave my no error. or is everythig wrong?


Scope (_SB.PCI0)
{
Device (I2C0)
{
Name (_HID, "INT3442") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB10))
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD0, SB00, SIR0))
}
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
GETD (SB10)
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB10)
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB10)
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD0))
}
Name (_ADR, 0x00150000) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
Return (Zero)
}
}
}

Scope (_SB.PCI0)
{
Device (I2C1)
{
Name (LINK, "\\_SB.PCI0.I2C1")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB11))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB11)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB11)
}

Name (_HID, "INT3443") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB11))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD1, SB01, SIR1))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD1))
}

Name (_ADR, 0x00150001) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Zero)
}
}
}

Scope (_SB.PCI0)
{
Device (I2C2)
{
Name (LINK, "\\_SB.PCI0.I2C2")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB12))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB12)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB12)
}

If (LNotEqual (SMD2, 0x02))
{
Name (_HID, "INT3444") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB12))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD2, SB02, SIR2))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD2))
}
}

If (LEqual (SMD2, 0x02))
{
Name (_ADR, 0x00150002) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C3)
{
Name (LINK, "\\_SB.PCI0.I2C3")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB13))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB13)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB13)
}

If (LNotEqual (SMD3, 0x02))
{
Name (_HID, "INT3445") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB13))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD3, SB03, SIR3))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD3))
}
}

If (LEqual (SMD3, 0x02))
{
Name (_ADR, 0x00150003) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C4)
{
Name (LINK, "\\_SB.PCI0.I2C4")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB14))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB14)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB14)
}

If (LNotEqual (SMD4, 0x02))
{
Name (_HID, "INT3446") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB14))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD4, SB04, SIR4))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD4))
}
}

If (LEqual (SMD4, 0x02))
{
Name (_ADR, 0x00190002) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C5)
{
Name (LINK, "\\_SB.PCI0.I2C5")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB15))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB15)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB15)
}

If (LNotEqual (SMD5, 0x02))
{
Name (_HID, "INT3447") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB15))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD5, SB05, SIR5))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD5))
}
}

If (LEqual (SMD5, 0x02))
{
Name (_ADR, 0x00190001) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}
 
Last edited:
Joined
Mar 21, 2015
Messages
299
Motherboard
Gigabyte GA-Z97X-Gaming 3 G1
CPU
i5-4690K OC@4.3GHz
Graphics
RX 480
Mobile Phone
  1. Android
the same problem for me. in IORegister it says that IC2 is elan 1200. but when i´m patching my DSDT it appears de error (name exist in scope).


this is my I2C DSDT entries, i´ve patched I2CO with INT3442 e I2C1 with INT3443. is this correct? it gave my no error. or is everythig wrong?


Scope (_SB.PCI0)
{
Device (I2C0)
{
Name (_HID, "INT3442") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB10))
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD0, SB00, SIR0))
}
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
GETD (SB10)
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB10)
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB10)
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD0))
}
Name (_ADR, 0x00150000) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
Return (Zero)
}
}
}

Scope (_SB.PCI0)
{
Device (I2C1)
{
Name (LINK, "\\_SB.PCI0.I2C1")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB11))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB11)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB11)
}

Name (_HID, "INT3443") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB11))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD1, SB01, SIR1))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD1))
}

Name (_ADR, 0x00150001) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Zero)
}
}
}

Scope (_SB.PCI0)
{
Device (I2C2)
{
Name (LINK, "\\_SB.PCI0.I2C2")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB12))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB12)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB12)
}

If (LNotEqual (SMD2, 0x02))
{
Name (_HID, "INT3444") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB12))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD2, SB02, SIR2))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD2))
}
}

If (LEqual (SMD2, 0x02))
{
Name (_ADR, 0x00150002) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C3)
{
Name (LINK, "\\_SB.PCI0.I2C3")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB13))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB13)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB13)
}

If (LNotEqual (SMD3, 0x02))
{
Name (_HID, "INT3445") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB13))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD3, SB03, SIR3))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD3))
}
}

If (LEqual (SMD3, 0x02))
{
Name (_ADR, 0x00150003) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C4)
{
Name (LINK, "\\_SB.PCI0.I2C4")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB14))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB14)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB14)
}

If (LNotEqual (SMD4, 0x02))
{
Name (_HID, "INT3446") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB14))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD4, SB04, SIR4))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD4))
}
}

If (LEqual (SMD4, 0x02))
{
Name (_ADR, 0x00190002) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

Scope (_SB.PCI0)
{
Device (I2C5)
{
Name (LINK, "\\_SB.PCI0.I2C5")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB15))
}

Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB15)
}

Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB15)
}

If (LNotEqual (SMD5, 0x02))
{
Name (_HID, "INT3447") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB15))
}

Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD5, SB05, SIR5))
}

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD5))
}
}

If (LEqual (SMD5, 0x02))
{
Name (_ADR, 0x00190001) // _ADR: Address
Method (XDSM, 4, Serialized)
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}

Return (Buffer (One)
{
0x00
})
}
}
}
}

ELAN1200 uses different kexts and stuff
 
Joined
Jul 26, 2012
Messages
71
Motherboard
Asus Zenbook UX330UA - Clover EFI
CPU
Intel i5-7200U
Graphics
Intel® HD Graphics 620, 1920x1080
Joined
Oct 7, 2011
Messages
182
Motherboard
Acer 5750g
CPU
i7-2630QM
Graphics
HD 3000-GT 540m
The trackpad does not want to work
pici8086 9d60
when I try to apply the patch to the voodooI2c gives me this error

38835, 6126, syntax error, unexpected $end and premature End-Of-File
pici8086 9d60
 
Joined
Apr 21, 2016
Messages
1,351
Motherboard
ASUS X556UA-Clover
CPU
i5-6200U
Graphics
HD 520,1366x768
Mobile Phone
  1. iOS
The trackpad does not want to work
pici8086 9d60
when I try to apply the patch to the voodooI2c gives me this error

38835, 6126, syntax error, unexpected $end and premature End-Of-File
pici8086 9d60
Attach your DSDT.dsl please.
A copy of IOReg would be great as well (together with your DSDT, not instead!)
Which patches do you try to apply exactly?
 
Joined
Oct 7, 2011
Messages
182
Motherboard
Acer 5750g
CPU
i7-2630QM
Graphics
HD 3000-GT 540m
Attach your DSDT.dsl please.
A copy of IOReg would be great as well (together with your DSDT, not instead!)
Which patches do you try to apply exactly?

here is my ioreg and my dsdt.dsl and dsdt.aml, you never know
I would like to operate the trackpad and the battery
the dsdt is disassembled and unpatched
 

Attachments

  • marco’s MacBook Pro.zip
    1.5 MB · Views: 60
  • DSDT.aml.zip
    40.5 KB · Views: 62
  • DSDT.dsl.zip
    76.8 KB · Views: 57
Joined
Apr 21, 2016
Messages
1,351
Motherboard
ASUS X556UA-Clover
CPU
i5-6200U
Graphics
HD 520,1366x768
Mobile Phone
  1. iOS
Top