Jump to content

Dell Inspiron 3558: lost TrackPad


oldman20

Recommended Posts

after tried many times, still not working

I followed voodooi2c guide carefully:

  • correct my ACPI ID is TPD1, and know my CPU is Broadwell no need GPI0 controller patch, and I2C Controller Patches?
  • Windows Emulation patch will done with SSDT-XOSI.aml
  • Look at IOInterruptSpecifiers to know the hexadecimal APIC pin number is 0x1e mean 30 in decimal, less than 47, then can proceed to install kexts.

But at Step Ensure I2C Serial bus name is correctly labelled, I not sure about it. Here is original method from DSDT:

_SB.PCI0.I2C1.TPD1:

        Device (TPD1)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If (LEqual (RDGI (0x35), One))
                {
                    Return (0xB0068C11)
                }
                Else
                {
                    Return (0xAF068C11)
                }
            }

            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x04)  // _S0W: S0 Device Wake State
            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 (0x20)
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                           
                    })
                }
                Return (Zero)
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (LEqual (And (SDS1, 0x08), 0x08))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
                    }
                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
                }

                Return (SBFI)
            }
        }

I renamed SBFI to SBFB and remove:

                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y2A)
                    {
                        0x0000001E,
                    }

 

But can't compile, so I removed these too:

                })
                If (LEqual (GR13, One))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL3)  // _INT: Interrupts
                    Store (0x1B, VAL3)
                }

                If (LOr (LOr (LEqual (BID, 0x80), LEqual (BID, 0x82)), LEqual (BID, 0x83)))
                {
                    CreateDwordField (SBFI, \_SB.PCI0.I2C1.TPD1._CRS._Y2A._INT, VAL4)  // _INT: Interrupts
                    Store (0x1A, VAL4)
                }

 

Then compiled SSDT-TPD1.aml success (below attached files), put this SSDT-TPD1.aml in OC/ACPI and add to config.plist. Reboot and nothing change

Trackpad work like mouse, no gestures but Trackpad setting not show in system preferences, and nothing advance setting for trackpad in BIOS. Battery status + brighter slide working well

In IOReg, TPD1 show Interrupt mode is APIC, and can't see GPI0 - which I understand no need for Broadwell CPU right?1051016536_ScreenShot2022-09-08at19_52_19.png.085dbae0e5f1496e543d47c777005ad3.png

What were I missing? thank and regards!

HumanInterfaceDevice.png

SSDT-TPD1.ioreg Without-SSDT-TPD1.ioreg SSDT-TPD1.aml.zip

 

Screen Shot 2022-09-08 at 20.16.00.png

Screen Shot 2022-09-08 at 20.15.40.png

Link to comment
Share on other sites

Does not work in gpi0 mode, can work in polling mode. 

He sees it as a mouse, it happened to me on my latitude before the kext alpshid came out, then it was fixed. 

In your case it is a syna. 

Write on the gitter of I2c and look for if it is compatible with voodoo rmi I2c. 

Good luck. 

 

But try instead of I2c hid put I2c syna

  • Thanks 1
Link to comment
Share on other sites

I tried with i2csynaptics, not work, rmi too

Maybe this is speciak case.

Btw, would u take a look my config.plist is correct for i2c? (Order kext and patches)?

And here said about Supported Situations, maybe any hoping?

Screen Shot 2022-09-09 at 14.06.16.png

 

with your ssdt above + ssdt tpd1, GPI0 exist and interrupt mode Polling, but in acpi-device show "i2c IOACPIPlatformDevice is not serializable", maybe it is reason?

Screen Shot 2022-09-09 at 14.34.12.png

HackBook Pro-I2C-Polling.ioreg

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...