Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

I have to say I am a little lost. I have read post #1 at least a dozen times and I still don’t quite understand what code I need to change. I have gotten this far.

I first edited the DSDT so it has no errors and I believe is now correct. At least my laptop boots with it. :)

Ran the grep commands and got the following:

Mac-Pro:patched $ grep -l Method.*_OFF *.dsl
SSDT-3-Ther_Rvp.dsl
SSDT-5-SaSsdt.dsl
SSDT-7-SgPch.dsl
SSDT-8-AmdTabl.dsl
Mac-Pro:patched $ grep -l Method.*_INI *.dsl
SSDT-5-SaSsdt.dsl
SSDT-7-SgPch.dsl

So now I see that SSDT 5 and 7 are in both.

I look for METHOD (_INI in SSDT-7, line 205, I find:

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
}

Correct _INI to patch.

Search for _OFF in SSDT-7 I find:

Method (_OFF, 0, Serialized) // _OFF: Power Off
{
If (LNotEqual (OSYS, 0x07D9))
{
\_SB.PCI0.RP01.PEGP.HGOF ()
Store (Zero, _STA)
}
}

I am assuming at his point this is the correct area I need to edit.

Wrong _OFF (that one is in a PowerResource macro).
You want to look at SSDT-8.
It calls HGOF (which is in SSDT-7), but fortunately HGOF contains no EC related code, so you need no edits to it.

Do I just delete or comment out the line: \_SB.PCI0.RP01.PEGP.HGOF ()

No.

But before I even get to the point of editing, when I first open SSDT-7, I am faced with several compiler errors that I have no idea how to fix (see attached image).

No need to recompile that file (as mention above, it requires no edits).
But if you disassemble it correctly (iasl -da -dl DSDT.aml SSDT*.aml), it compiles without errors.
 
Correct _INI to patch.



Wrong _OFF (that one is in a PowerResource macro).
You want to look at SSDT-8.
It calls HGOF (which is in SSDT-7), but fortunately HGOF contains no EC related code, so you need no edits to it.

Ah, I've been looking only at the two that were in the grep results.

No need to recompile that file (as mention above, it requires no edits).
But if you disassemble it correctly (iasl -da -dl DSDT.aml SSDT*.aml), it compiles without errors.
In your "Patching LAPTOP DSDT/SSDTs" guide you state: "For newer ACPI sets (from computers that are Skylake and later), there is no need for -da as they have embedded External opcodes" and since I have a Skylake processor I did not use the -da option. I will dissassemble with it and see if I have errors.
 
In your "Patching LAPTOP DSDT/SSDTs" guide you state: "For newer ACPI sets (from computers that are Skylake and later), there is no need for -da as they have embedded External opcodes" and since I have a Skylake processor I did not use the -da option. I will dissassemble with it and see if I have errors.

Not all newer computers will have used the new iasl that embeds External opcodes.
It depends on which tools the OEM was using for building BIOS at the time.
 
I think I have the SSDT-5 edited properly now. One question, do I need to edit anything in the DSDT as well since you say there is no EC code?

As per guide...
With no EC related code in the _OFF execution path, no need to place any such code into _REG.
 
I think I have finally disabled my discrete graphics card. Please let me know if I have been successful. How can I tell this for myself?

Are there any other things I need to edit in my DSDT? And if there are disabled patches in my config.plist, should I delete them to have a clean config (i.e. ThinkPad patches, disabled patches)?
 
Oh, didn’t know I needed to do that. Attached is revised files after removing SSDT-DiscreteSpoof.aml

Although calling HGOF directly probably works, you should instead call _OFF (as written in post #1).
 
If I use the following:

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
//added to turn nvidia/radeon off
//External(\_SB.PCI0.RP01.PEGP._OFF, MethodObj)
_OFF()
}

I get a compile error at line 185, code 6084 "Object does not exist (_OFF)

If I use:

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (Zero, \_SB.PCI0.RP01.PEGP._ADR)
//added to turn nvidia/radeon off
//External(\_SB.PCI0.RP01.PEGP._OFF, MethodObj)
HGOF()
}

I get no compile errors. That is why I changed it.
 
Back
Top