You can try to undo the Windows 2012 patch and apply the Windows 2015 patch instead (see VoodooI2C patches repo). I think it would be more suitable for your machine.
Was this IOReg captured with VoodooI2C loaded?
When loaded, any panic occurs?
Also, you may try to change the _STA under TPL0 to return Zero, as suggested (not sure if it can help when there's no panic, but it doesn't hurt to try!)
Another option is to modify I2C0 in your DSDT from this:
Code:
Scope (_SB.PCI0)
{
Device (I2C0)
{
Name (LINK, "\\_SB.PCI0.I2C0")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB10))
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB10)
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB10)
}
}
}
If (LNotEqual (SMD0, 0x02))
{
Scope (_SB.PCI0.I2C0)
{
Name (_HID, "INT3442") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB10))
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD0, SB00, SIR0))
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD0))
}
}
}
If (LEqual (SMD0, 0x02))
{
Scope (_SB.PCI0.I2C0)
{
Name (_ADR, 0x00150000) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
Return (Zero)
}
}
}
To this:
Code:
Scope (_SB.PCI0)
{
Device (I2C1)
{
Name (LINK, "\\_SB.PCI0.I2C1")
Method (_PSC, 0, NotSerialized) // _PSC: Power State Current
{
Return (GETD (SB11))
}
Method (_PS0, 0, NotSerialized) // _PS0: Power State 0
{
LPD0 (SB11)
}
Method (_PS3, 0, NotSerialized) // _PS3: Power State 3
{
LPD3 (SB11)
}
If (LNotEqual (SMD1, 0x02))
{
Name (_HID, "INT3443") // _HID: Hardware ID
Method (_HRV, 0, NotSerialized) // _HRV: Hardware Revision
{
Return (LHRV (SB11))
}
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Return (LCRS (SMD1, SB01, SIR1))
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (LSTA (SMD1))
}
}
If (LEqual (SMD1, 0x02))
{
Name (_ADR, 0x00150001) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
If (PCIC (Arg0))
{
Return (PCID (Arg0, Arg1, Arg2, Arg3))
}
Return (Buffer (One)
{
0x00
})
}
}
}
}
Thank you again, Ben, for your patience and constant advice,
1 when I modify the DSDT as above, it gave me 7 erros, so I didn't save it.
2 That return (Zero) touch seems working and cure only part of the problem I have, it secures me to use the internal keyboard to type ( otherwise as soon as I KU/load the VoodooI2C in the s/l/e, the keyboard will be lost.
3 whenever I add the VoodooI2C, the booting is extremely long, and mouse is snailing and OS less responsive.
4 If with DSDT, there will be no Kernel panic when loading/KU I2C.kext.
5 I always do the DSDT first and install the VoodooI2C afterwards, I will reverse and try again ( Voodoo first, cache rebuilding, patch afterward)
6 The IOreg I uploaded last time is without the Voodoo I2C injection, now I upload it again with the kext.
7 The DSDT I patched this time:
[bat] Asus N55SL/VivoBook Battery (requires ACPIBatteryManager.kext)
[igpu] Brightness fix
[sys] add IMEI
[sys] Fix _WAK Argo v2
[sys] Fix Mutex with non-zero SyncLevel
[sys] HPET Fix
VoodooI2C repo: window 2015 patch, not the 2012
[sys] RTC Fix
[sys] Skylake LPC ( I didn't do this)
[sys] SMBUS Fix
[usb] 7-series/8-series USB
[usb] USB3 _PRW 0x6D Skylake (instant wake)
8 my understanding is: in general, load the kext in Clover, if not working, then use Kext utility to install into S/L/E or L/E. Do the DSDT patch before adding any new Kext.
Pardon me if I still didn't get it working. and appreciate your assist always.