Contribute
Register

VoodooI2C Help and Support

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
3,997
Motherboard
GB Z490 Vision G
CPU
i9 10850K OC @ 5.2 GHz
Graphics
Vega 64 LC + HD 630
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Mobile Phone
  1. iOS
Thank you! Could I see your DSDT to compare with mine? Hoping to see how your DSDT in I2C0.TPL0 device is different from mine.

@shiecldk,

Here you go ... copy of native DSDT for HP Spectre X360

Cheers
Jay
 

Attachments

  • DSDT.aml.zip
    56.7 KB · Views: 29
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
@shiecldk,

Here you go ... copy of native DSDT for HP Spectre X360

Cheers
Jay
Thanks. I also read your topic in

Wonder if you could possiblily help me look into my DSDT for the touchscreen and stylus? I found my code is a bit different from yours.

Code:
Scope (_SB.PCI0.I2C2)
    {
        Device (TPL0)
        {
            Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Name (SADR, Buffer (One)
            {
                 0x10                                             // .
            })
            Name (HIDS, Package (0x01)
            {
                "ELAN9008"
            })
            Name (HIDA, Buffer (One)
            {
                 0x01                                             // .
            })
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                Return (DerefOf (Index (HIDS, TPLI)))
            }

            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 (DerefOf (Index (HIDA, TPLI)))
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                             // .
                    })
                }
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (LEqual (TPLP, Zero))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\\_SB.PCI0.I2C2",
                        0x00, ResourceConsumer, _Y39, Exclusive,
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                    {
                        0x0000001B,
                    }
                })
                CreateWordField (SBFI, \_SB.PCI0.I2C2.TPL0._CRS._Y39._ADR, ADR1)  // _ADR: Address
                Store (DerefOf (Index (SADR, TPLI)), ADR1) /* \_SB_.PCI0.I2C2.TPL0._CRS.ADR1 */
                Return (SBFI) /* \_SB_.PCI0.I2C2.TPL0._CRS.SBFI */
            }
        }
    }
 
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
Hello all. I am completely defeated. I have a Lenovo Flex 14-iwl (very similar to S340/S540).

I would REALLY appreciate it if ANYONE, @ben9923, or @jaymonkey could take a look at my hot patch code for my touchpad for me. It works, but only in polling mode, and I am trying to remedy that. I've spent HOURS and can sift through code and figure out things out usually, but am not a programmer.

From what I can tell, my issue seems quite similar to the one @ben9923 fixed for @jaymonkey a few posts back, but I can't pin point the exact changes needed as my original DSDT code seems a bit different.

From what I learned from the Voodooi2c logs, ioreg, etc, I should be using pin 0x50, but it cannot register that pin, similar to @jaymonkey 's issue. I have attached my laptop's DSDT, my TPAD hot patch SSDT code, and the Voodooi2c log for good measure.

FYI The log info for TPXX & MSFT0001 pertains to my touchpad. You can disregard ECSH & WCOM51C7. Those are HID Sensors & my touchscreen, respectively. I am currently using SSDT-XOSI.aml while trying to fix this, but would like to remove and disable it, as it seems to have broken my brightness Function keys I mapped successfully.

VERY grateful for anyone willing to help, I am beyond frustrated. Thank you so much.

UPDATE: I actually got it working and fixed it! Just a few minor edits, but more importantly, since I had tried everything possible code-wise, I decided to dedicate time to sifting through the entire advanced BIOS menu. I eventually found a setting "Force Unlock On All GPIO Pads" and it was disabled. I did some research and thought this had a very high chance of being the fix and changed it to enabled. The pin that shows up in IOreg and Windows didn't work so I just used one of the values I had generated when following the Pinning Guide, and VOILA! Interrupt Mode!

I have not seen one person mention this setting anywhere and I see tons of people with Lenovo laptops similar to mine that are stuck in Polling mode. I hope people see this and it helps them. I may not get back the hours upon hours I spent trying to fix it, but hey I am grateful I did. A big thank you to Alex for his hard work on Voodooi2c and the rest of the community for theirs.
Hi @KingKlick, do you think this BIOS option could also work on touchscreen? My touchscreen do not need and GPIO patch in my DSDT/SSDT. However, it only has one point contact working without the multitouch gesture. The GPIO pins are lower than 0x2F, so I was thinking GPIO patch is not needed?
 
Joined
Jul 14, 2021
Messages
5
Motherboard
Lenovo Ideapad Flex 14-iwl (Model 81SQ0000US) (OpenCore)
CPU
i5 8265u (Cannonlake-LP, 300 series)
Graphics
Intel HD 620, 1920x1080
Mobile Phone
  1. Android
Hi @KingKlick, do you think this BIOS option could also work on touchscreen? My touchscreen do not need and GPIO patch in my DSDT/SSDT. However, it only has one point contact working without the multitouch gesture. The GPIO pins are lower than 0x2F, so I was thinking GPIO patch is not needed?

You can look in your bios, but I'm not sure my fix would help you in your case. That is, unless you have your touchscreen set up to use GPIO interrupts. You shouldn't have to though, because your apic pin is less than 2F, so you should be using apic interrupts.

Plus, I wasn't getting any movement at all until I fixed my bios settings. You on the other hand have basic function, but are just missing MT capability it sounds like.
 
Joined
Sep 24, 2012
Messages
174
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
You can look in your bios, but I'm not sure my fix would help you in your case. That is, unless you have your touchscreen set up to use GPIO interrupts. You shouldn't have to though, because your apic pin is less than 2F, so you should be using apic interrupts.

Plus, I wasn't getting any movement at all until I fixed my bios settings. You on the other hand have basic function, but are just missing MT capability it sounds like.
Thanks. Yes, my Bios has the option but it's hidden. I had to use setup_var_cv to change between ACPI and GPIO mode. However, it seemed nothing changed after I save the BIOS option and reboot.
 
Joined
Oct 20, 2015
Messages
71
Motherboard
GIGABYTE 15 OLED KC (4K)
CPU
i7-10870H
Graphics
UHD 630
Mac
  1. iMac
  2. MacBook
  3. MacBook Air
  4. Mac mini
Mobile Phone
  1. Android
  2. iOS
Hello everyone.
I ask for help starting Trackpad.
I tried to do different SSDT-GPIOs, but nothing works.
My device is

Scope (_SB.PCI0.I2C0)
Device (TPD0)
APIC PIN 0x28 (IOREG <28 00 00 00 03 00 00 00>)

What to do next ?
Should I use:
- SSDT-GPIO?
- SSDT-XOSI?

I do not understand how to make the desired SSDT.
Thank you all in advance for your help.
 

Attachments

  • dsdt+ioreg+efi.zip
    31.4 MB · Views: 19
Last edited:
Joined
Mar 7, 2013
Messages
77
Motherboard
Lenovo G710 / HM86
CPU
i7-4702mq
Graphics
HD4600 /820M
Mobile Phone
  1. iOS
Hello everyone.
I ask for help starting Trackpad.
I tried to do different SSDT-GPIOs, but nothing works.
My device is

Scope (_SB.PCI0.I2C0)
Device (TPD0)
APIC PIN 0x28 (IOREG <28 00 00 00 03 00 00 00>)

What to do next ?
Should I use:
- SSDT-GPIO?
- SSDT-XOSI?

I do not understand how to make the desired SSDT.
Thank you all in advance for your help.
Try this one. If i'm right it should be enough to enable your I2C. And i guess you would need some satellite kext https://github.com/VoodooI2C/VoodooI2C/blob/master/Documentation/Satellites.md
 

Attachments

  • SSDT-GPI0_zaa.aml
    172 bytes · Views: 26
Joined
Oct 20, 2015
Messages
71
Motherboard
GIGABYTE 15 OLED KC (4K)
CPU
i7-10870H
Graphics
UHD 630
Mac
  1. iMac
  2. MacBook
  3. MacBook Air
  4. Mac mini
Mobile Phone
  1. Android
  2. iOS
Thank you so much for your answer.

I tried:
reset NVRAM + SSDT only
reset NVRAM + VoodooI2CHID only
reset NVRAM + SSDT + VoodooI2CHID

Unfortunately it doesn't help. Trackpad doesn't work.
 
Last edited:
Joined
Mar 7, 2013
Messages
77
Motherboard
Lenovo G710 / HM86
CPU
i7-4702mq
Graphics
HD4600 /820M
Mobile Phone
  1. iOS
Load the SSDT and install VoodooI2C and VoodooI2CHID. Reboot and look at ioreg under PCI0.I2C0 is VoodooI2C loaded.
Also under PCI0.GPI0 should have voodoo.
Show us the output of sudo dmesg | grep -i voodoo, you would need DebugEnhancer kext to dmesg to show the logs from Voodoo.
Also see if the SSDT is loaded correctly, without any errors
 
Joined
Oct 20, 2015
Messages
71
Motherboard
GIGABYTE 15 OLED KC (4K)
CPU
i7-10870H
Graphics
UHD 630
Mac
  1. iMac
  2. MacBook
  3. MacBook Air
  4. Mac mini
Mobile Phone
  1. Android
  2. iOS
Load the SSDT and install VoodooI2C and VoodooI2CHID. Reboot and look at ioreg under PCI0.I2C0 is VoodooI2C loaded.
Also under PCI0.GPI0 should have voodoo.
Show us the output of sudo dmesg | grep -i voodoo, you would need DebugEnhancer kext to dmesg to show the logs from Voodoo.
Also see if the SSDT is loaded correctly, without any errors
[ 3.538243]: VoodooGPIOCannonLakeH::Loading GPIO Data for CannonLake-H
[ 3.538250]: VoodooGPIOCannonLakeH::VoodooGPIO Init!
[ 3.538251]: VoodooGPIOCannonLakeH::VoodooGPIO Initializing Community 0
[ 3.538329]: VoodooGPIOCannonLakeH::VoodooGPIO Initializing Community 1
[ 3.538405]: VoodooGPIOCannonLakeH::VoodooGPIO Initializing Community 2
[ 3.538481]: VoodooGPIOCannonLakeH::VoodooGPIO Initializing Community 3
[ 3.538599]: VoodooGPIOCannonLakeH::GPIO Controller is already awake! Not reinitializing.
 

Attachments

  • opencore-2021-10-13-150716.txt
    256 KB · Views: 18
Last edited:
Top