Contribute
Register

VoodooI2C Help and Support

Status
Not open for further replies.
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.
 
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: 140
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)`.
 
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.
 
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.
 
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.
Back
Top