Contribute
Register

VoodooI2C Help and Support

Status
Not open for further replies.
I installed mac os x high sierra without problems. almost everything works except the keyboard and the trackpad (Elan1200), i try several times the dsdt.aml patch but I cant make it work.
I am using vodooI2C and Voddoi2CHID
No error on boot
Trackpad not detected
what can I do?
Did you check how trackpad and keyboard are connected? (USB, PS2, I2C...)
You may do it via Windows Device Manager.

Also check for related BIOS settings for input (basic vs. advanced maybe? should be advanced)

Requested file are missing. Please use gen_debug.sh for easy collection and upload. Press F2 and F4 in the Clover GUI before running the script.
 
Hi guys, I am stuck with voodooI2C on my Dell 7390.
Here is my clover.zip and ioreg as attachments.
I am trying to hotpatch with clover and ssdt-i2c.aml in ACPI/patched.
Somehow the I2C-kext does not attach to 8086:9d60 device

Any ideas? Thank you.
Your many config.plist files create a real mess. You should really only have one, called 'config.plist'.

Your drivers64Uefi is wrong too.
You should only have ApfsDriverLoader-64.efi, AptioMemoryFix-64.efi, FSInject-64.efi, HFSPlus.efi and SMCHelper-64.efi there.

Remove those 'old-*' folders in Clover/ACPI.

Why do you have a patched DSDT.aml when hotpatching...?

And use gen_debug.sh (Press F2 + F4 in the Clover GUI before running) to collect all of the requested files for debug.
 
I'm on the same boat with my Dell 7480 (damn Dell). I2C-kext does not attach, reports patch is not applied - but I thought I did it.
Why is the SSDT called 'SSDT-ETPD'? Your device is TPD1.

You already have SBFB and SBFG declared in OEM DSDT. No need to re-declare them (even with a different name) in the SSDT.
Just return this in _CRS:
Code:
Return (ConcatenateResTemplate (SBFB, SBFG))

SSDT-XOSI is, of course, not effective when the _OSI -> XOSI patch is disabled.
You must also rename the _CRS method to XCRS (Just for TPD1). This rename is also disabled for some reason.
 
This was another failed attempt to make things work. I had a rename patch from TPD1 to ETPD, so I could use the SSDT-ETPD.aml file to patch it. As it did not worked, I removed the patch, but seems I forgot to remove the file - which was not making any good since this file SSDT-ETPD.aml is listed on DisabledAML on my config.plist. Added to the cleanup.


Isn't that how it currently is?
Code:
        Device (TPD1)
        {
            Name (HID2, Zero)
            Name (SBFB, ResourceTemplate ()
            {
                I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PCI0.I2C1",
                    0x00, ResourceConsumer, , Exclusive,
                    )
            })
            Name (SBFI, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, _Y24)
                {
                    0x00000000,
                }
            })
            Name (SBFG, ResourceTemplate ()
            {
                GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
                    "\\_SB.PCI0.GPI0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x1B
                    }
            })
            CreateWordField (SBFG, 0x17, INT1)
            CreateDWordField (SBFI, \_SB.PCI0.I2C1.TPD1._Y24._INT, INT2)  // _INT: Interrupts
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                If (LLess (OSYS, 0x07DC))
                {
                    SRXO (GPDI, One)
                }

                Store (GNUM (GPDI), INT1)
                Store (INUM (GPDI), INT2)
                If (LEqual (SDM1, Zero))
                {
                    SHPO (GPDI, One)
                }

                If (LEqual (SDS1, 0x07))
                {
                    If (LEqual (CBID, 0x079F))
                    {
                        Store ("DLL079f", _HID)
                    }

                    If (LEqual (CBID, 0x07F3))
                    {
                        Store ("DLL07f3", _HID)
                    }

                    If (LEqual (CBID, 0x07A0))
                    {
                        Store ("DLL07A0", _HID)
                    }

                    If (LEqual (CBID, 0x07AA))
                    {
                        Store ("DLL07AA", _HID)
                    }

                    If (LEqual (CBID, 0x07AB))
                    {
                        Store ("DLL07AB", _HID)
                    }

                    Store (0x20, HID2)
                    Return (Zero)
                }
            }

            Name (_HID, "XXXX0000")  // _HID: Hardware ID
            Name (_CID, "PNP0C50")  // _CID: Compatible ID
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg0, HIDG))
                {
                    Return (HIDD (Arg0, Arg1, Arg2, Arg3, HID2))
                }

                If (LEqual (Arg0, TP7G))
                {
                    Return (TP7D (Arg0, Arg1, Arg2, Arg3, SBFB, SBFG))
                }

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

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                ECTP (Zero)
                If (LEqual (SDS1, 0x07))
                {
                    Return (0x0F)
                }

                Return (Zero)
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Return (ConcatenateResTemplate (SBFB, SBFG))
            }
        }


That was my fault - disabled one too many things.


And this is where things get confusing. On TPD1, I need a _CRS method (see code snipped above), but should it get renamed to XCRS to work?
Putting a .dsl file in ACPI/patched won't have effect. Your computer can only 'read' .aml files.
As you're already hotpatching, there's no need for a patched DSDT. That's why I told you to rename _CRS to XCRS - to combine with an SSDT that has a patched _CRS method :)

If your GPIO controller isn't enabled 'natively', you should also rename _STA of GPI0 to XSTA, and add a patched method that return 0x0F, like in that SSDT-ETPD.

You shouldn't modify anything in TPD1 besides _CRS. So don't explicitly set GPIO pin 0x1B there
 
Your many config.plist files create a real mess. You should really only have one, called 'config.plist'.

Your drivers64Uefi is wrong too.
You should only have ApfsDriverLoader-64.efi, AptioMemoryFix-64.efi, FSInject-64.efi, HFSPlus.efi and SMCHelper-64.efi there.

Remove those 'old-*' folders in Clover/ACPI.

Why do you have a patched DSDT.aml when hotpatching...?

And use gen_debug.sh (Press F2 + F4 in the Clover GUI before running) to collect all of the requested files for debug.


Hi Ben
Thanks for your reply. Cleaned the mess and generated debug files as requested.
DSDT removed, too.
Pls see attached ZIP.
 

Attachments

  • debug_12204.zip
    7.3 MB · Views: 88
Ok, so here is what I did now:
* Clover patched OSID to XSID, _OSI to XOSI, TDP1._CRS to TDP1.XCRS and GPI0._STA to GPI0.XSTA;
* applied the three required VoodooI2C patches (Windows, I2C controller and GPIO controller enabled) as two separate aml files;
* No GPIO pin 0x1B set under TDP1 - aka using default 0x0000;

Trackpad works as a mouse. Left button is laggy - sometimes I have to press it more than once to have one click taken. No gestures. Does not show under SysPrefs>Trackpad. From logging, seems I am running on polling mode:

Code:
lexs-MacBook-Pro:~ hquest$ log show --predicate 'process == "kernel"' --start "2018-10-22 16:30:00" | grep -i "I2C" | more

2018-10-22 16:31:01.121027-0400 0xe2       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d60 Starting I2C controller
2018-10-22 16:31:01.121166-0400 0xe2       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d60 Set PCI power state D0
2018-10-22 16:31:01.121350-0400 0xe3       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d61 Starting I2C controller
2018-10-22 16:31:01.121379-0400 0xe3       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d61 Set PCI power state D0
2018-10-22 16:31:01.121395-0400 0xe2       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d60 Publishing nub
2018-10-22 16:31:01.121621-0400 0xe3       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CPCIController::pci8086,9d61 Publishing nub
2018-10-22 16:31:01.121909-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d60 Probing controller
2018-10-22 16:31:01.129296-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d60 Found valid Synopsys component, continuing with initialisation
2018-10-22 16:31:01.133195-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d61 Probing controller
2018-10-22 16:31:01.138745-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d61 Found valid Synopsys component, continuing with initialisation
2018-10-22 16:31:01.139144-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerNub::pci8086,9d61 SSCN not implemented in ACPI tables
2018-10-22 16:31:01.139241-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerNub::pci8086,9d61 FMCN not implemented in ACPI tables
2018-10-22 16:31:01.139368-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerNub::pci8086,9d60 SSCN not implemented in ACPI tables
2018-10-22 16:31:01.139421-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d61 Warning: Error getting bus config, using defaults where necessary
2018-10-22 16:31:01.139649-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerNub::pci8086,9d60 FMCN not implemented in ACPI tables
2018-10-22 16:31:01.139876-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d60 Warning: Error getting bus config, using defaults where necessary
2018-10-22 16:31:01.140121-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d61 Publishing device nubs
2018-10-22 16:31:01.147833-0400 0xf0       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d60 Publishing device nubs
2018-10-22 16:31:01.148114-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d61 Found I2C device: DLL07A0
2018-10-22 16:31:01.148886-0400 0xf6       Default     0x0                  0      0    kernel: (VoodooI2C) VoodooI2CControllerDriver::VoodooI2CDeviceNub Warning: Incompatible APIC interrupt pin (0x33 > 0x2f) and no GPIO interrupts found; if your chosen satellite implements polling then VoodooI2CDeviceNub will run in polling mode.
2018-10-22 16:31:01.197197-0400 0x101      Default     0x0                  0      0    kernel: (AppleACPIPlatform) ACPI Warning: \_SB.PCI0.I2C1.TPD1._DSM:
2018-10-22 16:31:01.197199-0400 0x101      Default     0x0                  0      0    kernel: (AppleACPIPlatform) ACPI Warning: \_SB.PCI0.I2C1.TPD1._DSM:
2018-10-22 16:31:01.217663-0400 0x101      Default     0x0                  0      0    kernel: (VoodooI2CHID) VoodooI2CHIDDevice::DLL07A0 Warning: Could not get interrupt event source, using polling instead
2018-10-22 16:31:05.414738-0400 0x850      Default     0x0                  0      0    kernel: I2C1: match category IODefaultMatchCategory exists
2018-10-22 16:31:05.417653-0400 0x84d      Default     0x0                  0      0    kernel: I2C0: match category IODefaultMatchCategory exists
2018-10-22 16:31:05.446792-0400 0x851      Default     0x0                  0      0    kernel: (AppleIntelLpssI2C) AppleIntelLpssI2C-1::initI2CGpio: no ISOL, validateObject returned 0xe00002bc
2018-10-22 16:31:05.461884-0400 0x851      Default     0x0                  0      0    kernel: I2C2: match category IODefaultMatchCategory exists
2018-10-22 16:31:05.464035-0400 0x875      Default     0x0                  0      0    kernel: (AppleIntelLpssI2CController) AppleIntelLpssI2CController-1::_notificationPublishedHandler: getChannelNumber failed
2018-10-22 16:31:10.528325-0400 0x6e5      Default     0x0                  0      0    kernel: (VoodooI2CHID) VoodooI2CTouchscreenHIDEventDriver::setProperties USBMouseStopsTrackpad = 0
2018-10-22 16:31:38.420163-0400 0x2fd5     Default     0x0                  0      0    kernel: (AppleIntelLpssI2CController) AppleIntelLpssI2CController::_serviceMatchingTimeSubr: fTimerServiceMatching timed out, fNotifications 0
2018-10-22 16:33:23.166186-0400 0x13b      Default     0x0                  0      0    kernel: (VoodooI2CHID) VoodooI2CTouchscreenHIDEventDriver::Got active display
2018-10-22 16:33:23.166197-0400 0x13b      Default     0x0                  0      0    kernel: (VoodooI2CHID) VoodooI2CTouchscreenHIDEventDriver::Got active framebuffer

Adding the GPIO pin 0x1B to the patched aml file makes no difference.

Sorry for being a pain.
Original _CRS isn't being changed to XCRS, so your device is still configured for APIC interrupts. As your APIC pin is bigger than 0x2F, device will use polling mode. Check your patch to see it actually fits your DSDT (Can't just copy a patch from a different machine).
You may want to read RehabMan's hotpatching guide.

About multitouch and prefpane - I suspect your trackpad is a Synaptics. Multitouch support for Synaptics should arrive in the next update of VoodooI2C, meanwhile you have single touch...
Notice - You'll have to fix the interrupts issue before (Synaptics won't support polling. It's much less efficient anyways)
 
Hi Ben
Thanks for your reply. Cleaned the mess and generated debug files as requested.
DSDT removed, too.
Pls see attached ZIP.
Make sure you have version 2.1 of IORegistryExplorer in /Applications before running the script. A copy of IOReg isn't attached.

In your case, you may add Windows 2017 to SSDT-XOSI.
As your trackpad is TPD1, there's no reason in patching TPD0, remove from SSDT-I2C.

Please attach a new archive after those changes (make sure IOReg is attached) :)
 
Status
Not open for further replies.
Back
Top