Contribute
Register

VoodooI2C Help and Support

Status
Not open for further replies.
Joined
Nov 8, 2014
Messages
130
Mac
Classic Mac
Mobile Phone
Joined
Nov 8, 2014
Messages
130
Mac
Classic Mac
Mobile Phone
thanks!
By following the instructions, I made the trackpad work.
And I feel that the two-finger-tap gesture is not so sensitive.
Is it common defect of I2C device?

It is a known bug but I don't know what causes it.
 
Joined
May 6, 2016
Messages
59
Motherboard
asus k501ux
CPU
i5-6200U
Graphics
GTX 950M
Mac
  1. MacBook Pro
ACPI ID for my laptop touch pad is ETPD. native DSDT code for this device is:
Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (ELAN)
                {
                    Return ("ELAN1000")
                }

                If (FOLT)
                {
                    Return ("FTE1001")
                }

                Return ("ELAN1010")
            }

            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, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                    {
                        0x0000006D,
                    }
                })
                Return (SBFI)
            }
        }
by following installation guide I changed it to:
Code:
    Scope (_SB.PCI0.I2C1)
    {
        Device (ETPD)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (ELAN)
                {
                    Return ("ELAN1000")
                }

                If (FOLT)
                {
                    Return ("FTE1001")
                }

                Return ("ELAN1010")
            }
            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0055
                    }
            })
            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 (XDSM, 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, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFB, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0015, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                })
                Return (ConcatenateResTemplate (SBFB, SBFG))
            }
        }
    }
after installing VoodooI2C and VoodooI2CELAN kexts to clover (other) folder. my touchpad still not working. is there any mistake with my procedure?
 

Attachments

  • DSDT-I2C_patched2.dsl.zip
    79.3 KB · Views: 124
Joined
Nov 8, 2014
Messages
130
Mac
Classic Mac
Mobile Phone
thanks for answering. here are all file needed for Troubleshooting.
All Ioregs should be provided with VoodooI2C loaded (an ioreg without it is useless to me). You also neglected to provide me with a log file as requested.

In any case, I think the issue is related to the `_STA` method of your `ETPD`. Try replacing its contents with simply `Return (0x0F)`.
 
Joined
May 6, 2016
Messages
59
Motherboard
asus k501ux
CPU
i5-6200U
Graphics
GTX 950M
Mac
  1. MacBook Pro
All Ioregs should be provided with VoodooI2C loaded (an ioreg without it is useless to me). You also neglected to provide me with a log file as requested.

In any case, I think the issue is related to the `_STA` method of your `ETPD`. Try replacing its contents with simply `Return (0x0F)`.
After replacing _STA method content and installing kext to L/E, touch pad is working very well.
Very thanks for your guide.
 
Joined
Nov 8, 2014
Messages
130
Mac
Classic Mac
Mobile Phone
After replacing _STA method content and installing kext to L/E, touch pad is working very well.
Very thanks for your guide.
As the guide says, you should always inject VoodooI2C and the satellites with Clover.
 
Joined
May 6, 2016
Messages
59
Motherboard
asus k501ux
CPU
i5-6200U
Graphics
GTX 950M
Mac
  1. MacBook Pro
As the guide says, you should always inject VoodooI2C and the satellites with Clover.
Clover method is not working for me, after delete VoodooI2C and VoodooI2C ELAN kext from L/E and copy to clover kext folder and rebuild cache, touch pad disabled and disappeared from system preferences
 
Status
Not open for further replies.
Top