- Joined
- Jul 4, 2020
- Messages
- 15
- Motherboard
- ASUSTek X556UV (U3E1)
- CPU
- i5-6200U
- Graphics
- Intel HD Graphic 520
- Mobile Phone
CSM must be off in the BIOS for the spoofing to work correctly, especially on AMD CPU based systems.
Which one of the three methods you used? I am using the boot-arg one, but my battery still draining so quick!Thanks @RehabMan for the great guide and support.
I wanted to point to a nice and simple method in the OpenCore guide, that seems to be the way to go now:
By adding the property as described there, I successfully blocked my Nvidia GPU which made sleep work on my laptop.
Scope (\_SB.PCI0.PEG0.PEGP)
{
Method (_ON, 0, Serialized) // _ON_: Power On
{
\_SB.PCI0.PGON (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
\_SB.PCI0.PGOF (Zero)
If ((\_SB.PCI0.DGPV != 0x10DE))
{
Notify (\_SB.PCI0.PEG0, Zero)
}
}
Method (SGPO, 4, Serialized)
{
If ((Arg2 == Zero))
{
Arg3 = ~Arg3
Arg3 &= One
}
If ((SGGP == One))
{
If (CondRefOf (\_SB.SGOV))
{
\_SB.SGOV (Arg1, Arg3)
}
}
}
}
Method PGOFMethod (_INI, 0, NotSerialized) // _INI: Initialize
{
If (((SGMD == 0x03) && (IGDS != Zero)))
{
IGDS = Zero
}
\_SB.SHPO (FBEN, One)
\_SB.SHPO (ENVT, One)
\_SB.SPC0 (FBEN, ((\_SB.GPC0 (FBEN) & 0xFFFFF0FF) | 0x0100))
\_SB.SPC0 (ENVT, ((\_SB.GPC0 (ENVT) & 0xFFFFF0FE) | 0x0201))
}
_OFF method on Scope SB.PCI0.PEG0Method (PGOF, 1, Serialized)
{
PIOF = Arg0
If ((PIOF == Zero))
{
If ((SGGP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == One))
{
If ((P1GP == Zero))
{
Return (Zero)
}
}
ElseIf ((PIOF == 0x02))
{
If ((P2GP == Zero))
{
Return (Zero)
}
}
PEBA = \XBAS
PDEV = GDEV (PIOF)
PFUN = GFUN (PIOF)
If ((\_SB.GGOV (0x03060000) == Zero))
{
Return (Zero)
}
If ((\_SB.PCI0.DGPV == 0x10DE))
{
\_SB.PCI0.PEG0.PEGP.LTRE = \_SB.PCI0.PEG0.LREN
}
If ((Arg0 == Zero))
{
ELC0 = LCT0
H0VI = S0VI
H0DI = S0DI
ECP0 = LCP0
}
ElseIf ((Arg0 == One))
{
ELC1 = LCT1
H1VI = S1VI
H1DI = S1DI
ECP1 = LCP1
}
ElseIf ((Arg0 == 0x02))
{
ELC2 = LCT2
H2VI = S2VI
H2DI = S2DI
ECP2 = LCP2
}
\_SB.PCI0.PEG0.SAVR ()
RTDS (PIOF)
If ((PBGE != Zero))
{
If (SBDL (PIOF))
{
MBDL = GMXB (PIOF)
PDUB (PIOF, MBDL)
}
}
PGSC (Arg0, Zero)
If ((Arg0 == Zero))
{
Divide (\_SB.PCI0.PEG0.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == One))
{
Divide (\_SB.PCI0.PEG1.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
ElseIf ((Arg0 == 0x02))
{
Divide (\_SB.PCI0.PEG2.LNRD, 0x03E8, Local0, Local1)
Sleep (Local1)
}
GPPR (PIOF, Zero)
DIWK (PIOF)
Return (Zero)
}
Method (_OFF, 0, Serialized) // _OFF: Power Off
{
If ((RCM1 (0x67) == 0x67))
{
If ((RCM1 (0x69) == 0x69))
{
HWA1 |= 0x30000000
HWA3 |= 0x30000000
}
ElseIf ((RCM1 (0x68) == 0x68))
{
HWA2 |= 0x30000000
HWA4 |= 0x30000000
}
}
If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = One
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}
If ((Acquire (\_SB.PCI0.LPCB.EC0.HGCT, 0xA000) == Zero))
{
If ((OSYS > 0x07D9))
{
P8XH (Zero, 0xDF)
If ((\_SB.PCI0.DGPV == 0x10DE))
{
If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GATY = Zero
Sleep (0x0A)
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}
If ((\_SB.PCI0.TDGC == One))
{
CreateField (\_SB.PCI0.TGPC, Zero, 0x03, GUPC)
If ((ToInteger (GUPC) == One))
{
\_SB.PCI0.GC6I ()
}
ElseIf ((ToInteger (GUPC) == 0x02))
{
\_SB.PCI0.GC6I ()
}
_STA = Zero
}
Else
{
PGOF (Zero)
_STA = Zero
}
}
Else
{
PGOF (Zero)
_STA = Zero
}
}
Release (\_SB.PCI0.LPCB.EC0.HGCT)
}
If (\_SB.PCI0.LPCB.EC0.ECAV)
{
If ((Acquire (\_SB.PCI0.LPCB.EC0.LFCM, 0xA000) == Zero))
{
\_SB.PCI0.LPCB.EC0.GPOF = Zero
Release (\_SB.PCI0.LPCB.EC0.LFCM)
}
}
}