jalavoui Posted April 30 Share Posted April 30 (edited) here's my "pro" laptop lazy setup with fresh kexts probably nobody else got this junk Edited October 24 by jalavoui Link to comment Share on other sites More sharing options...
shl628 Posted April 30 Author Share Posted April 30 For VoodooI2C to work in Tiger Lake, depending on the chipset, the PCI ID of the I2C Controller must be added to Info.plist. Tiger Lake-LP : 0xa0e88086&0xFFFCFFFF Tiger Lake-H : 0x43e88086&0xFFFCFFFF 2 Link to comment Share on other sites More sharing options...
shl628 Posted April 30 Author Share Posted April 30 (edited) I succeeded in operating the I2C touchpad of my Tiger Lake laptop in Interrupt (GPIO) mode using VoodooI2C built by jalavoui. Both the touchpad and gestures work well. 🙂 [ 1.513685]: VoodooGPIOTigerLakeLP::Loading GPIO Data for TigerLake-LP [ 1.513738]: VoodooGPIOTigerLakeLP::Missing Platform Data! Aborting! [ 1.513844]: VoodooGPIOTigerLakeLP::VoodooGPIO Init! [ 1.513895]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 0 [ 1.514075]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 1 [ 1.514180]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 2 [ 1.514269]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 3 [ 1.514575]: VoodooGPIOTigerLakeLP::GPIO Controller is already awake! Not reinitializing. [ 1.562508]: VoodooI2CPCILakeController::pci8086,a0eb Starting I2C controller [ 1.563223]: VoodooI2CPCILakeController::pci8086,a0e8 Starting I2C controller [ 1.563518]: VoodooI2CPCILakeController::pci8086,a0e8 Set PCI power state D0 [ 1.563523]: VoodooI2CPCILakeController::pci8086,a0e8 Current CPU is Comet Lake or Ice Lake, patching... [ 1.563680]: VoodooI2CPCILakeController::pci8086,a0e8 Publishing nub [ 1.563782]: VoodooI2CControllerDriver::pci8086,a0e8 Probing controller [ 1.563797]: VoodooI2CControllerDriver::pci8086,a0e8 Found valid Synopsys component, continuing with initialisation [ 1.563852]: VoodooI2CPCILakeController::pci8086,a0e9 Starting I2C controller [ 1.563868]: VoodooI2CPCILakeController::pci8086,a0e9 Set PCI power state D0 [ 1.563871]: VoodooI2CPCILakeController::pci8086,a0e9 Current CPU is Comet Lake or Ice Lake, patching... [ 1.563969]: VoodooI2CPCILakeController::pci8086,a0e9 Publishing nub [ 1.564126]: VoodooI2CControllerDriver::pci8086,a0e9 Probing controller [ 1.564132]: VoodooI2CControllerDriver::pci8086,a0e9 Found valid Synopsys component, continuing with initialisation [ 1.564276]: VoodooI2CControllerDriver::pci8086,a0e8 Got bus configuration values [ 1.564330]: VoodooI2CControllerDriver::pci8086,a0e8 Publishing device nubs [ 1.564332]: VoodooI2CControllerDriver::pci8086,a0e8 Found I2C device: ELAN0B00 [ 1.564445]: VoodooI2CDeviceNub::SPTP Found valid resources from _CRS method [ 1.564468]: VoodooI2CControllerDriver::pci8086,a0e9 Got bus configuration values [ 1.564481]: VoodooI2CDeviceNub::SPTP Returned index 0x0 from _DSM or XDSM method is not supported [ 1.564484]: VoodooI2CDeviceNub::SPTP Could not retrieve resources from _DSM or XDSM method [ 1.564488]: VoodooI2CDeviceNub::SPTP Found valid GPIO interrupts [ 1.564493]: VoodooI2CDeviceNub::SPTP Got GPIO Controller! VoodooGPIOTigerLakeLP [ 1.564556]: VoodooI2CControllerDriver::pci8086,a0e9 Publishing device nubs [ 2.066319]: VoodooI2CHIDDevice:0x1000003bc start [ 2.066331]: VoodooGPIOTigerLakeLP::Registering hardware pin 0xB3 for GPIO IRQ pin 0x108 [ 2.066335]: VoodooGPIOTigerLakeLP::Successfully registered hardware pin 0xB3 for GPIO IRQ pin 0x108 [ 2.168225]: VoodooI2CHIDDevice::ELAN0B00 Device initiated reset accomplished [ 2.281536]: VoodooI2CHIDDevice:0x1000003bc creating interfaces [ 2.283119]: VoodooI2CPrecisionTouchpadHIDEventDriver:0x1000003de start [ 2.283642]: VoodooInputSimulatorDevice:0x1000003e4 start [ 2.315554]: open by VoodooI2CPrecisionTouchpadHIDEventDriver 0x1000003de (0x0) [ 2.315573]: VoodooI2CPrecisionTouchpadHIDEventDriver::ELAN0B00 Putting device into Precision Touchpad Mode [ 2.317524]: VoodooInputActuatorDevice:0x1000003e7 start [ 2.317642]: VoodooInputSimulatorDevice:0x1000003e4 creating interfaces [ 2.318139]: VoodooInputActuatorDevice:0x1000003e7 creating interfaces [ 3.562525]: ApplePS2Controller: Notification consumer published: VoodooI2CPrecisionTouchpadHIDEventDriver [ 4.802203]: VoodooI2CPCILakeController::pci8086,a0eb Set PCI power state D0 [ 5.503275]: VoodooI2CPCILakeController::pci8086,a0eb Current CPU is Comet Lake or Ice Lake, patching... [ 5.503325]: VoodooI2CPCILakeController::pci8086,a0eb Publishing nub [ 5.503416]: VoodooI2CControllerDriver::pci8086,a0eb Probing controller [ 5.503432]: VoodooI2CControllerDriver::pci8086,a0eb Found valid Synopsys component, continuing with initialisation [ 5.503704]: VoodooI2CControllerDriver::pci8086,a0eb Got bus configuration values [ 5.503767]: VoodooI2CControllerDriver::pci8086,a0eb Publishing device nubs [ 24.432264]: VoodooI2CHIDDevice:0x1000003bc Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing [ 24.432276]: VoodooInputSimulatorDevice:0x1000003e4 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing [ 24.450965]: VoodooInputSimulatorDevice:0x1000003e4 Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing [ 24.454410]: VoodooI2CHIDDevice:0x1000003bc Matching has vendor DeviceUsagePage : ff0c bundleIdentifier com.apple.AppleUserHIDDrivers ioclass AppleUserHIDEventService but transport and vendorID is missing [ 32.236556]: Sandbox: systemstats(318) deny(1) mach-lookup com.apple.cmio.registerassistantserviceVoodooInputSimulatorDevice:0x1000003e4 new user client [ 38.357370]: VoodooI2CPrecisionTouchpadHIDEventDriver::setProperties USBMouseStopsTrackpad = 0 [ 54.554862]: VoodooInputSimulatorDevice:0x1000003e4 new user client DefinitionBlock ("", "SSDT", 2, "hack", "SPTP", 0x00000000) { External (_SB_.PC00.I2C0.SPTP, DeviceObj) External (_SB_.PC00.I2C0.SPTP.MINT, IntObj) External (GPHD, FieldUnitObj) External (USTP, FieldUnitObj) Scope (\) { If (_OSI ("Darwin")) { GPHD = Zero USTP = One \_SB.PC00.I2C0.SPTP.MINT = Zero } } } Edited April 30 by shl628 1 1 Link to comment Share on other sites More sharing options...
benmacfreak Posted April 30 Share Posted April 30 cool i added my device id, following the example you posted, mine is tigerlake h according to lspci -nn so im trying it also nblue with my laptop's deviceid added, hopefully it works.. Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 the new i2c kexts dont work for me, is it using GPIO or APIC interrupts? I may have to mod Bios to enable either. pcidevices.txt Link to comment Share on other sites More sharing options...
shl628 Posted April 30 Author Share Posted April 30 (edited) @Mastachief 1. Have you patched the _CRS Method to operate in Interrupt (GPIO) mode on devices corresponding to I2C touchpads? 2. How does VoodooI2C's Dmesg log appear? 3. Please attach DSDT.aml Edited April 30 by shl628 Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 (edited) DSDT.aml I have tried by using ssdt time and then trying to edit the below section, see my striped down efi attached as well. OC.zip Not sure if its because its a dell machine and its PC00 instead of PCI0, but the I2C kexts are not showing up in the dmesg log. as being loaded, ioreg reports the device attaching though.... Big-MacBook-Air ~ % sudo dmesg | grep -i I2C Password: [ 168.038813]: 1 duplicate report for Sandbox: airportd(219) deny(1) file-read-xattr /usr/sbin/bluetoothdSandbox: com.apple.quicklook.ThumbnailsAg(432) deny(1) file-read-xattr /Users/big/Library/Mobile Documents3 duplicate reports for Sandbox: com.apple.quicklook.ThumbnailsAg(432) deny(1) file-read-xattr /Users/big/Library/Mobile DocumentsSandbox: com.apple.quicklook.ThumbnailsAg(432) deny(1) file-read-xattr /Users/big/Downloads/VoodooI2CHID.kextSandbox: com.apple.quicklook.ThumbnailsAg(432) deny(1) file-read-xattr /Users/big/Downloads/VoodooI2C.kextSandbox apply: CSExattrCryptoService[694] <bytes>LQM-WiFi: BE : Count: 0 avgLatencyMs:0 maxLatencyMs:0 I see that the _CRS Method for TPDO is near the end. Scope (_SB.PC00.I2C1) { Name (I2CN, Zero) Name (I2CX, Zero) Method (_INI, 0, NotSerialized) // _INI: Initialize { I2CN = SDS1 /* \SDS1 */ I2CX = One } Device (TPD0) { Name (HID2, Zero) Name (SBFB, ResourceTemplate () { I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PC00.I2C1", 0x00, ResourceConsumer, _Y55, Exclusive, ) }) Name (SBFG, ResourceTemplate () { GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0000 } }) Name (SBFI, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, _Y56) { 0x00000000, } }) CreateWordField (SBFB, \_SB.PC00.I2C1.TPD0._Y55._ADR, BADR) // _ADR: Address CreateDWordField (SBFB, \_SB.PC00.I2C1.TPD0._Y55._SPE, SPED) // _SPE: Speed CreateWordField (SBFG, 0x17, INT1) CreateDWordField (SBFI, \_SB.PC00.I2C1.TPD0._Y56._INT, INT2) // _INT: Interrupts Method (_INI, 0, NotSerialized) // _INI: Initialize { If ((OSYS < 0x07DC)) { SRXO (GPDI, One) } INT1 = GNUM (GPDI) INT2 = INUM (GPDI) If ((TPDM == Zero)) { SHPO (GPDI, One) } HID2 = TPDH /* \TPDH */ BADR = TPDB /* \TPDB */ If ((TPDS == Zero)) { SPED = 0x000186A0 } If ((TPDS == One)) { SPED = 0x00061A80 } If ((TPDS == 0x02)) { SPED = 0x000F4240 } } Name (ITPN, "DELL0A21") Method (_HID, 0, NotSerialized) // _HID: Hardware ID { Return (ITPN) /* \_SB_.PC00.I2C1.TPD0.ITPN */ } Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */) // _CID: Compatible ID Name (_S0W, 0x03) // _S0W: S0 Device Wake State Name (DRDY, Zero) Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method { If ((DRDY == Zero)) { If ((Arg0 == HIDG)) { DRDY = One EV12 (Zero, Zero) } } If ((Arg0 == HIDG)) { Return (HIDD (Arg0, Arg1, Arg2, Arg3, HID2)) } If ((Arg0 == TP7G)) { Return (TP7D (Arg0, Arg1, Arg2, Arg3, SBFB, SBFG)) } Return (Buffer (One) { 0x00 // . }) } Method (_STA, 0, NotSerialized) // _STA: Status { If (((TPDT != Zero) && (I2CN & One))) { Return (0x0F) } Return (Zero) } Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { If ((OSYS < 0x07DC)) { Return (SBFI) /* \_SB_.PC00.I2C1.TPD0.SBFI */ } If ((TPDM == Zero)) { Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFG)) } Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFI)) } } } Edited April 30 by Mastachief kext view Link to comment Share on other sites More sharing options...
shl628 Posted April 30 Author Share Posted April 30 (edited) @Mastachief Try using the SSDT I created below. SSDT-TPD0.aml DefinitionBlock ("", "SSDT", 2, "hack", "SPTP", 0x00000000) { External (_SB_.PC00.I2C1, DeviceObj) External (FMD0, FieldUnitObj) External (FMD1, FieldUnitObj) External (FMH0, FieldUnitObj) External (FMH1, FieldUnitObj) External (FML0, FieldUnitObj) External (FML1, FieldUnitObj) External (GPHD, FieldUnitObj) External (SSD0, FieldUnitObj) External (SSD1, FieldUnitObj) External (SSH0, FieldUnitObj) External (SSH1, FieldUnitObj) External (SSL0, FieldUnitObj) External (SSL1, FieldUnitObj) External (TPDM, FieldUnitObj) Scope (\) { If (_OSI ("Darwin")) { GPHD = Zero TPDM = Zero } } Scope (_SB.PC00.I2C1) { If (_OSI ("Darwin")) { Method (PKG3, 3, Serialized) { Name (PKG, Package (0x03) { Zero, Zero, Zero }) PKG [Zero] = Arg0 PKG [One] = Arg1 PKG [0x02] = Arg2 Return (PKG) /* \_SB_.PC00.I2C1.PKG3.PKG_ */ } Method (SSCN, 0, NotSerialized) { Return (PKG3 (SSH1, SSL1, SSD1)) } Method (FMCN, 0, NotSerialized) { Return (PKG3 (FMH1, FML1, FMD1)) } } } } And, DebugEnhancer.kext is required to print VoodooI2C's Dmesg log on the terminal. With DebugEnhancer.kext applied, run the command below in the terminal. sudo dmesg | grep "Voodoo" Edited April 30 by shl628 1 Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 See below; Last login: Tue Apr 30 00:40:07 on console big@Big-MacBook-Air ~ % sudo dmesg | grep "Voodoo" Password: [ 1.557693]: VoodooGPIOTigerLakeLP::Loading GPIO Data for TigerLake-LP [ 1.557696]: VoodooGPIOTigerLakeLP::Missing Platform Data! Aborting! [ 1.557706]: VoodooGPIOTigerLakeLP::VoodooGPIO Init! [ 1.557708]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 0 [ 1.557741]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 1 [ 1.557768]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 2 [ 1.557790]: VoodooGPIOTigerLakeLP::VoodooGPIO Initializing Community 3 [ 1.558822]: VoodooGPIOTigerLakeLP::GPIO Controller is already awake! Not reinitializing. [ 1.804204]: VoodooI2CPCILakeController::pci8086,a0e9 Starting I2C controller [ 1.804729]: VoodooI2CPCILakeController::pci8086,a0ea Starting I2C controller [ 1.804757]: VoodooI2CPCILakeController::pci8086,a0ea Set PCI power state D0 [ 1.804760]: VoodooI2CPCILakeController::pci8086,a0ea Current CPU is Comet Lake or Ice Lake, patching... [ 1.804829]: VoodooI2CPCILakeController::pci8086,a0ea Publishing nub [ 1.804877]: VoodooI2CPCILakeController::pci8086,a0e8 Starting I2C controller [ 1.804942]: VoodooI2CPCILakeController::pci8086,a0e8 Set PCI power state D0 [ 1.804964]: VoodooI2CPCILakeController::pci8086,a0e8 Current CPU is Comet Lake or Ice Lake, patching... [ 1.805012]: VoodooI2CPCILakeController::pci8086,a0e8 Publishing nub [ 1.805979]: VoodooI2CControllerDriver::pci8086,a0ea Probing controller [ 1.805982]: VoodooI2CControllerDriver::pci8086,a0e8 Probing controller [ 1.805984]: VoodooI2CControllerDriver::pci8086,a0ea Found valid Synopsys component, continuing with initialisation [ 1.805990]: VoodooI2CControllerDriver::pci8086,a0e8 Found valid Synopsys component, continuing with initialisation [ 1.806015]: VoodooI2CControllerNub::pci8086,a0ea SSCN not implemented in ACPI tables [ 1.806021]: VoodooI2CControllerNub::pci8086,a0e8 SSCN not implemented in ACPI tables [ 1.806140]: VoodooI2CControllerNub::pci8086,a0ea FMCN not implemented in ACPI tables [ 1.806148]: VoodooI2CControllerDriver::pci8086,a0ea Warning: Error getting bus config, using defaults where necessary [ 1.806209]: VoodooI2CControllerNub::pci8086,a0e8 FMCN not implemented in ACPI tables [ 1.806232]: VoodooI2CControllerDriver::pci8086,a0e8 Warning: Error getting bus config, using defaults where necessary [ 1.806236]: VoodooI2CControllerDriver::pci8086,a0ea Publishing device nubs [ 1.806336]: VoodooI2CControllerDriver::pci8086,a0e8 Publishing device nubs [ 5.184218]: VoodooI2CPCILakeController::pci8086,a0e9 Set PCI power state D0 [ 7.013802]: VoodooI2CPCILakeController::pci8086,a0e9 Current CPU is Comet Lake or Ice Lake, patching... [ 7.013831]: VoodooI2CPCILakeController::pci8086,a0e9 Publishing nub [ 7.013942]: VoodooI2CControllerDriver::pci8086,a0e9 Probing controller [ 7.013949]: VoodooI2CControllerDriver::pci8086,a0e9 Found valid Synopsys component, continuing with initialisation [ 7.014154]: VoodooI2CControllerDriver::pci8086,a0e9 Got bus configuration values [ 7.014192]: VoodooI2CControllerDriver::pci8086,a0e9 Publishing device nubs [ 7.014194]: VoodooI2CControllerDriver::pci8086,a0e9 Found I2C device: DELL0A21 [ 7.014341]: VoodooI2CDeviceNub::TPD0 Found valid resources from _CRS method [ 7.014480]: VoodooI2CDeviceNub::TPD0 Found valid resources from _DSM or XDSM method [ 7.014482]: VoodooI2CDeviceNub::TPD0 Prefer resources from _DSM or XDSM method [ 7.014487]: VoodooI2CDeviceNub::TPD0 Found valid GPIO interrupts [ 7.014492]: VoodooI2CDeviceNub::TPD0 Got GPIO Controller! VoodooGPIOTigerLakeLP [ 7.517294]: VoodooI2CControllerDriver::pci8086,a0e9 I2C Transaction error details [ 7.517299]: VoodooI2CControllerDriver::pci8086,a0e9 slave address not acknowledged (7bit mode) [ 7.517301]: VoodooI2CControllerDriver::pci8086,a0e9 I2C Transaction error: 0x0f800001 - aborting [ 7.517303]: VoodooI2CHIDDevice::DELL0A21 Request for HID descriptor failed [ 7.517305]: VoodooI2CHIDDevice::DELL0A21 Could not get HID descriptor Link to comment Share on other sites More sharing options...
jalavoui Posted April 30 Share Posted April 30 (edited) shl628 i've add your id to sources i remenber some bios setting related to tpad work mode. anyway i also added missing binarys from i2c. hope it help Edited April 30 by jalavoui Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 (edited) There are only two major settings I see, aside from force unlock all gpio pads, which I enabled. In the first image, I enabled 0x1 under VarOffset: 0x4F3 Currently This is set to APIC interrupt, should I change to GPIO? Does anyone recall what there bios has enabled? Edited April 30 by Mastachief Link to comment Share on other sites More sharing options...
shl628 Posted April 30 Author Share Posted April 30 (edited) @Mastachief Try using SSDT-TPD0.aml attached below. I tried modifying SSCN and FMCN corresponding to the I2C Bus Speed variable. If that doesn't work, try using SSDT-TPD0-2.aml. SSDT-TPD0.aml SSDT-TPD0-2.aml I searched and it seems that the error may be related to SSCN and FMCN. https://github.com/VoodooI2C/VoodooI2C/issues/171 [ 7.517294]: VoodooI2CControllerDriver::pci8086,a0e9 I2C Transaction error details [ 7.517299]: VoodooI2CControllerDriver::pci8086,a0e9 slave address not acknowledged (7bit mode) [ 7.517301]: VoodooI2CControllerDriver::pci8086,a0e9 I2C Transaction error: 0x0f800001 - aborting Also, try changing to GPIO Interrupt in BIOS settings. Edited April 30 by shl628 Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 (edited) I think I borked something in my BIOS/UEFI because after using both of the SSDT-TPD0, i receive the same ioreg and dmesg as before with the transaction error. I'll have to reset by bios and redo my dvmt and MSR settings and then try again, i believe i modified some i2c setting by mistake. Dell makes it so hard to reach the disconnect cable for the bios battery. Edited April 30 by Mastachief Link to comment Share on other sites More sharing options...
jalavoui Posted April 30 Share Posted April 30 (edited) omg don't break you laptop. i think you got the best machine for hacintosh. i got luck with UMAF_BETA cause the config for my machine exists. i just found out no driver attempt was made for this (SOF driver) Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 25.958827] snd_hda_intel 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 25.958859] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 26.739183] sof-audio-pci-intel-tgl 0000:00:1f.3: hda codecs found, mask 5 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 26.739188] sof-audio-pci-intel-tgl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.022979] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC255: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.022983] snd_hda_codec_realtek ehdaudio0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.022985] snd_hda_codec_realtek ehdaudio0D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0) Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.022986] snd_hda_codec_realtek ehdaudio0D0: mono: mono_out=0x0 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.022987] snd_hda_codec_realtek ehdaudio0D0: inputs: Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068824] snd_hda_codec_realtek ehdaudio0D0: ASoC: sink widget AIF1TX overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068831] snd_hda_codec_realtek ehdaudio0D0: ASoC: source widget AIF1RX overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068974] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget hifi3 overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068980] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget hifi2 overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068984] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget hifi1 overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068988] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: source widget Codec Output Pin1 overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068992] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget Codec Input Pin1 overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.068998] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget Analog Codec Playback overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069003] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget Digital Codec Playback overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069009] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: sink widget Alt Analog Codec Playback overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069015] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: source widget Analog Codec Capture overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069020] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: source widget Digital Codec Capture overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069026] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: source widget Alt Analog Codec Capture overwritten Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.069036] skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.085501] input: sof-hda-dsp Front Headphone as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input16 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.085563] input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input17 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.085615] input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input18 Apr 7 03:02:39 linuxlite-iMacPro1-1 kernel: [ 27.085669] input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input19 any theory about this ? i'm thinking on something that uses voodohda and https://github.com/qhuyduong/AMDMicrophone this amd driver is very well written. base is https://github.com/torvalds/linux/blob/master/sound/soc/amd/renoir/rn-pci-acp3x.c this is not the same as linux Edited May 1 by jalavoui Link to comment Share on other sites More sharing options...
Mastachief Posted April 30 Share Posted April 30 (edited) Same errors as before TPD0-2 doent not work, but doesnt break my kryboard, the TPD0 breaks keyboard Edited May 1 by Mastachief Link to comment Share on other sites More sharing options...
jalavoui Posted May 1 Share Posted May 1 (edited) added the linux code for i2c changed if (value == ~0u) continue; i'm not getting the same logs you guys are but i noticed some fields on my dsdt Scope (_SB.PC00.I2C3) { Device (TPAD) { Name (_ADR, One) // _ADR: Address Name (_UID, One) // _UID: Unique ID Name (_S0W, 0x03) // _S0W: S0 Device Wake State Name (HID2, Zero) Name (TPID, Package (0x12) { Package (0x05) { 0x10, 0x15, One, "ELAN050A", "PNP0C50" }, Package (0x05) { 0x11, 0x15, One, "ELAN050B", "PNP0C50" }, Package (0x05) { 0x12, 0x15, One, "ELAN0514", "PNP0C50" }, Package (0x05) { 0x13, 0x15, One, "ELAN0515", "PNP0C50" }, Package (0x05) { 0x14, 0x2C, 0x20, "SYNA7DAB", "PNP0C50" }, Package (0x05) { 0x15, 0x2C, 0x20, "SYNA7DB5", "PNP0C50" }, Package (0x05) { 0x16, 0x15, One, "ELAN0521", "PNP0C50" }, Package (0x05) { 0x17, 0x15, One, "ELAN0522", "PNP0C50" }, Package (0x05) { 0x20, 0xFF, 0xFF, "ETD0518", 0x130FD041 }, Package (0x05) { 0x21, 0xFF, 0xFF, "ETD0519", 0x130FD041 }, Package (0x05) { 0x22, 0xFF, 0xFF, "ETD051B", 0x130FD041 }, Package (0x05) { 0x23, 0xFF, 0xFF, "ETD051C", 0x130FD041 }, Package (0x05) { 0x24, 0xFF, 0xFF, "SYN1B89", 0x130FD041 }, Package (0x05) { 0x25, 0xFF, 0xFF, "SYN1B8A", 0x130FD041 }, Package (0x05) { 0x26, 0xFF, 0xFF, "ETD0521", 0x130FD041 }, Package (0x05) { 0x27, 0xFF, 0xFF, "ETD0522", 0x130FD041 }, Package (0x05) { 0xFE, 0x15, One, "ELAN0504", "PNP0C50" }, Package (0x05) { 0xFF, 0xFF, 0xFF, "MSFT0003", 0x030FD041 } }) Name (SBFB, ResourceTemplate () { I2cSerialBusV2 (0x0000, ControllerInitiated, 0x00061A80, AddressingMode7Bit, "\\_SB.PC00.I2C3", 0x00, ResourceConsumer, _Y59, Exclusive, ) }) Name (SBFI, ResourceTemplate () { Interrupt (ResourceConsumer, Level, ActiveLow, ExclusiveAndWake, ,, ) { 0x0000001B, } }) Name (SBFG, ResourceTemplate () { GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000, "\\_SB.GPI0", 0x00, ResourceConsumer, , ) { // Pin list 0x0003 } }) CreateWordField (SBFB, \_SB.PC00.I2C3.TPAD._Y59._ADR, ADR0) // _ADR: Address Method (_HID, 0, Serialized) // _HID: Hardware ID { If (~CondRefOf (TPDF)) { Name (TPDF, 0xFE) } Switch (One) { Case (Zero) { TPDF = 0xFE } Case (One) { } Default { TPDF = 0xFE } } Return (TPDS (0x03, 0xFE, TPDF, "MSFT0001")) } Method (_CID, 0, Serialized) // _CID: Compatible ID { If (~CondRefOf (TPDF)) { Name (TPDF, 0xFE) } Switch (One) { Case (Zero) { TPDF = 0xFE } Case (One) { } Default { TPDF = 0xFE } } Return (TPDS (0x04, 0xFE, TPDF, "PNP0C50")) } Method (TPDS, 4, NotSerialized) { Local0 = Zero Local1 = Zero Local1 = DerefOf (DerefOf (TPID [Local0]) [Zero]) While (((Local1 != Arg1) && (Local1 != Arg2))) { Local0++ If ((Local0 >= SizeOf (TPID))) { Return (Arg3) } Local1 = DerefOf (DerefOf (TPID [Local0]) [Zero]) } Return (DerefOf (DerefOf (TPID [Local0]) [Arg0])) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */)) { If ((Arg2 == Zero)) { If ((Arg1 == One)) { Return (Buffer (One) { 0x03 // . }) } Else { Return (Buffer (One) { 0x00 // . }) } } If ((Arg2 == One)) { Return (HID2) /* \_SB_.PC00.I2C3.TPAD.HID2 */ } } Else { Return (Buffer (One) { 0x00 // . }) } If ((Arg0 == ToUUID ("ef87eb82-f951-46da-84ec-14871ac6f84b") /* Unknown UUID */)) { If ((Arg2 == Zero)) { If ((Arg1 == One)) { Return (Buffer (One) { 0x03 // . }) } Else { Return (Buffer (One) { 0x00 // . }) } } If ((Arg2 == One)) { Return (ConcatenateResTemplate (SBFB, SBFG)) } } Else { Return (Buffer (One) { 0x00 // . }) } Return (Buffer (One) { 0x00 // . }) } Method (_STA, 0, Serialized) // _STA: Status { If (~CondRefOf (TPDD)) { Name (TPDD, Zero) } Switch (TPDD) { Case (Zero) { If (Ones) { Return (0x0F) } Else { Return (Zero) } } Case (One) { Return (Zero) } Case (0x02) { Return (0x0F) } Default { Return (Zero) } } } Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { If (~CondRefOf (TPDF)) { Name (TPDF, 0xFE) } Local0 = Zero Local1 = Zero Local1 = DerefOf (DerefOf (TPID [Local0]) [Zero]) While (((Local1 != 0xFE) && (Local1 != TPDF))) { Local0++ If ((Local0 >= SizeOf (TPID))) { Break } Local1 = DerefOf (DerefOf (TPID [Local0]) [Zero]) } ADR0 = DerefOf (DerefOf (TPID [Local0]) [One]) HID2 = DerefOf (DerefOf (TPID [Local0]) [0x02]) If ((OSYS < 0x07DC)) { Return (SBFI) /* \_SB_.PC00.I2C3.TPAD.SBFI */ } If (Ones) { Return (ConcatenateResTemplate (SBFB, SBFG)) } Return (ConcatenateResTemplate (SBFB, SBFI)) } } } VoodooI2C-d0b9679f498b0aa90cabb914129ba127a72b2fb3.zipbin.zip this bug is so stupid a bad rename this break dsdt.aml always load it in macial to find this kind of mistakes update tpad config settings in dsdt.aml are tricky but there are a few posts online about irq setup and pin configs Edited May 3 by jalavoui Link to comment Share on other sites More sharing options...
Mastachief Posted May 1 Share Posted May 1 Decomp Version 14.4.1 (23E224) https://www.mediafire.com/file/c1qko73xh0t61d0/14.4.1_Kexts.zip/file added the bundles from the regular /System/Library/Extensions. Bundles.zip 1 Link to comment Share on other sites More sharing options...
jalavoui Posted May 2 Share Posted May 2 can you get the iclgraph and framebuffer kexts also ? this pic shows gpio but altough its working im not sure about the errors you get on start() i just cant get those logs during boot Link to comment Share on other sites More sharing options...
Mastachief Posted May 2 Share Posted May 2 (edited) Yes, the iclgraph and framebuffer kexts are in the mfire link on my most recent post. All files are from 14.4.1 Only the companion bundles are uploaded here, and those were taken not from kernel cache but from the /System/Library/Extensions folder. I still have not been able to implement GPIO on the TPD0 device for now. Edited May 2 by Mastachief 1 Link to comment Share on other sites More sharing options...
jalavoui Posted May 2 Share Posted May 2 (edited) tgl dmc vs csr_patch_ax var3= 0xc91 maybe array size ? the linux bin as extra bytes that i remove got it 0xc91 * 0x4 = 0x3244 bytes that matches the apple file modded tgl bin as 0x4a20 bytes so v3= 0x1288 i doubt this will load on sonoma as the patches are all tested on ventura and for sure they will fail and give kp btw there's a nice apple firmware loop log if using scheduler 3 boot with -v to check Edited May 4 by jalavoui Link to comment Share on other sites More sharing options...
Mastachief Posted May 3 Share Posted May 3 Is there a debug boot command for nblue, also the build is still not loading on Sonoma, weird. Link to comment Share on other sites More sharing options...
jalavoui Posted May 3 Share Posted May 3 (edited) i added the bytes to sonoma from the kexts you send hope it loads for you shl628 the tgl dmc bin is still a test (i think my code it is not well implemented). but you forgot to add _CSR_PATCH_B0plus part the firmware loop log is just a hack to show apple firmware message updated whatevergreen with sleep patch at this stage i have 2 goals: - framebufer load and avoid black screen (might need connector swap patch for some displays because if on frame zero it hangs the display with backlight calls) - sleep working using internal disk (might need dsdt.aml sleep patch) boot args tested: -v keepsyms=1 debug=0x100 agdpmod=vit9696 Edited May 14 by jalavoui 1 Link to comment Share on other sites More sharing options...
shl628 Posted May 4 Author Share Posted May 4 (edited) @jalavoui I imported the scheduler and TGL DMC-related patches from the most recently uploaded NBlue to WEG and applied them. And, the part that calls the solveRequest or routeRequest function for getGPUInfo and _CSR_PATCH uses the SYSLOG syntax to output a log to check whether it was applied properly. // kern_igfx.hpp const unsigned char tgl_dmc_ver2_12_bin[] = { ... }; const long int tgl_dmc_ver2_12_bin_size = sizeof(tgl_dmc_ver2_12_bin); ... class ForceCompleteModeset: public FramebufferModifer { ... public: // MARK: Patch Submodule IMP const uint8_t *_CSR_PATCH_B0plus; const uint8_t *_CSR_PATCH_AX; void init() override; void processKernel(KernelPatcher &patcher, DeviceInfo *info) override; void processFramebufferKext(KernelPatcher &patcher, size_t index, mach_vm_address_t address, size_t size) override; } modForceCompleteModeset; KernelPatcher::RouteRequest request("__ZN16IntelAccelerator10getGPUInfoEv", getGPUInfo, ogetGPUInfo); if (patcher.routeMultiple(index, &request, 1, address, size)) SYSLOG("igfx", "[TGL+] getGPUInfo: Functions have been routed successfully."); else SYSLOG("igfx", "[TGL+] getGPUInfo: Failed to route functions."); // TGL_DMC_ver2_12.bin static const uint8_t f9[] = {0x83, 0xbf, 0x9c, 0x0c, 0x00, 0x00, 0x00, 0x74, 0x1f, 0x4c, 0x8d, 0x35, 0x7c, 0xab, 0x0e, 0x00, 0x41, 0xbf, 0x8b, 0x0c, 0x00, 0x00}; static const uint8_t r9[] = {0x83, 0xbf, 0x9c, 0x0c, 0x00, 0x00, 0x00, 0x74, 0x1f, 0x4c, 0x8d, 0x35, 0x7c, 0xab, 0x0e, 0x00, 0x41, 0xbf, 0x88, 0x18, 0x00, 0x00}; static const uint8_t f9b[] = {0x48, 0xff, 0x05, 0xed, 0x28, 0x0b, 0x00, 0x4c, 0x8d, 0x35, 0x06, 0x79, 0x0e, 0x00, 0x41, 0xbf, 0x91, 0x0c, 0x00, 0x00}; static const uint8_t r9b[] = {0x48, 0xff, 0x05, 0xed, 0x28, 0x0b, 0x00, 0x4c, 0x8d, 0x35, 0x06, 0x79, 0x0e, 0x00, 0x41, 0xbf, 0x88, 0x12, 0x00, 0x00}; KernelPatcher::SolveRequest solveRequest = { "_CSR_PATCH_AX", this->_CSR_PATCH_AX }; KernelPatcher::SolveRequest solveRequest2 = { "_CSR_PATCH_B0plus", this->_CSR_PATCH_B0plus }; if (patcher.solveMultiple(index, &solveRequest, 1, address, size) && patcher.solveMultiple(index, &solveRequest2, 1, address, size)) SYSLOG("igfx", "[TGL+] _CSR_PATCH: Functions have been routed successfully."); else SYSLOG("igfx", "[TGL+] _CSR_PATCH: Failed to route functions."); this->_CSR_PATCH_AX = tgl_dmc_ver2_12_bin; this->_CSR_PATCH_B0plus = tgl_dmc_ver2_12_bin; KernelPatcher::LookupPatch patch { &kextIntelICLLPFb, f2, r2, sizeof(f2), 1 }; patcher.applyLookupPatch(&patch); KernelPatcher::LookupPatch patchb { &kextIntelICLLPFb, f2b, r2b, sizeof(f2b), 1 }; patcher.applyLookupPatch(&patchb); KernelPatcher::LookupPatch patch2 { &kextIntelICLLPFb, f1, r1, sizeof(f1), 1 }; patcher.applyLookupPatch(&patch2); KernelPatcher::LookupPatch patch3 { &kextIntelICLLPFb, f9, r9, sizeof(f9), 1 }; patcher.applyLookupPatch(&patch3); KernelPatcher::LookupPatch patch3b { &kextIntelICLLPFb, f9b, r9b, sizeof(f9b), 1 }; patcher.applyLookupPatch(&patch3b); Test 1 - NootedBlue : Disabled - WhenverGreen : Enabled - IGPU Device Properties : Injected (Platform ID : 0x8A5C0002) - boot-args : -v keepsyms=1 debug=0x100 -wegdbg - macOS Version : macOS Ventura 13.6.5 (22G621) Result : Booting was successful, but graphics acceleration did not work. And, I confirmed that the log below was output in the Dmesg log. WhateverGreen igfx: @ [TGL+] getGPUInfo: Functions have been routed successfully. WhateverGreen igfx: @ [TGL+] _CSR_PATCH: Functions have been routed successfully. Test 2 - NootedBlue : Disabled - WhenverGreen : Enabled - IGPU Device Properties : Injected (Platform ID : 0x8A5C0002) - boot-args : -v keepsyms=1 debug=0x100 -wegdbg -allow3d igfxfw=2 - macOS Version : macOS Ventura 13.6.5 (22G621) Result : While trying to accelerate graphics, the log "Gfx Firmware is HUNG" is displayed infinitely. Can someone please check if I modified WhateverGreen correctly? WhateverGreen.zip WhateverGreen-Sources.zip Edited May 4 by shl628 Link to comment Share on other sites More sharing options...
Mastachief Posted May 4 Share Posted May 4 I just tried your modified WhenverGreen without the -allow3d flag and it allows me to boot without the blackscreen issue on 14.4.1, framebuffer is enabled, if using 8a71, you get 2048MB, commands below -v keepsyms=1 debug=0x100 -wegdbg igfxfw=2 The Blackscreen after Sleep issue is still there, i have my correct efis configs on usb's, so i use the internal ssd efi for testing, it doesnt actually enter sleep Link to comment Share on other sites More sharing options...
Mastachief Posted May 4 Share Posted May 4 (edited) When I use the -allow3d along with the commands above, the screen stops at the below. WhateverGreen igfx: @ FOD: Failed to route function the function getDisplayStatus WhateverGreen igfx: @ (DBG) platform is snb 0 and list 0XFFFFFF7FAC812C30 Edited May 4 by Mastachief Link to comment Share on other sites More sharing options...
Recommended Posts