Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

I disassembled with 'iasl -da -dl DSDT SSDT* dynamic/SSDT*'...

Your DSDT compiles without error with just "Fix ADBG Error"

the DSDT is nice.. the problem is the SSDT... some come without errors but for example the 4th and the 8th i can't remove the errors...
 
the DSDT is nice.. the problem is the SSDT... some come without errors but for example the 4th and the 8th i can't remove the errors...

SSDT4 compiles without error using ACPI 4.0 (sometimes you have to think outside the box).

SSDT8 needs "Cleanup/Fix Errors (SSDT)" from the "--> Disable Nvidia/Radeon" section.
 
Patching for discrete disable

Remember the goal? Call _INI from _OFF... At this point we have a set of DSDT/SSDT that compile without errors, have balanced renames and have no duplicate _DSM methods.

Now... how to find the SSDT that has _OFF. We can use grep:
Code:
grep -l Method.*_OFF *.dsl

Which shows:
Code:
SSDT-10.dsl
SSDT-11.dsl

Also, it is nice to know where the _INI methods are:
Code:
grep -l Method.*_INI *.dsl

Which shows:
Code:
DSDT.dsl
SSDT-10.dsl
SSDT-11.dsl
SSDT-9.dsl

Note: SSDT-10 and SSDT-11 are listed again. This is likely where the _OFF and associated _INI are located...

We could also open each file individually into MaciASL and search for _OFF and _INI, but using grep is a bit easier and faster.

in mine it appeared:

Code:
Aldos-MacBook-Pro:untitled folder Aldo$ cd /Users/Aldo/Desktop/patching
Aldos-MacBook-Pro:patching Aldo$ grep -l Method.*_OFF *.dsl
SSDT8.dsl
Aldos-MacBook-Pro:patching Aldo$ 
Aldos-MacBook-Pro:patching Aldo$ grep -l Method.*_INI *.dsl
DSDT.dsl
SSDT6.dsl
SSDT7.dsl
SSDT8.dsl
Aldos-MacBook-Pro:patching Aldo$

if i understood right i should patch the SSDT8... when i opne it and search for "Method (_INI", i get:

Code:
 Scope (\_SB.PCI0.GFX0)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (DID1, Index (TLPK, Zero))
            Store (DID2, Index (TLPK, 0x02))
            Store (DID3, Index (TLPK, 0x04))
            Store (DID4, Index (TLPK, 0x06))
            Store (DID5, Index (TLPK, 0x08))
            Store (DID6, Index (TLPK, 0x0A))
            Store (DID7, Index (TLPK, 0x0C))
            Store (DID2, Index (TLPK, 0x0E))
            Store (DID1, Index (TLPK, 0x0F))
            Store (DID2, Index (TLPK, 0x11))
            Store (DID3, Index (TLPK, 0x12))
            Store (DID2, Index (TLPK, 0x14))
            Store (DID4, Index (TLPK, 0x15))
            Store (DID2, Index (TLPK, 0x17))
            Store (DID5, Index (TLPK, 0x18))
            Store (DID2, Index (TLPK, 0x1A))
            Store (DID6, Index (TLPK, 0x1B))
            Store (DID2, Index (TLPK, 0x1D))
            Store (DID7, Index (TLPK, 0x1E))
        }

and when i search for "Method (_OFF" i get:

Code:
Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CTXT, Zero))
            {
                \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB)
                }

                Store (One, CTXT)
            }

            SGOF ()
        }
what should i do?
 
in mine it appeared:

Code:
Aldos-MacBook-Pro:untitled folder Aldo$ cd /Users/Aldo/Desktop/patching
Aldos-MacBook-Pro:patching Aldo$ grep -l Method.*_OFF *.dsl
SSDT8.dsl
Aldos-MacBook-Pro:patching Aldo$ 
Aldos-MacBook-Pro:patching Aldo$ grep -l Method.*_INI *.dsl
DSDT.dsl
SSDT6.dsl
SSDT7.dsl
SSDT8.dsl
Aldos-MacBook-Pro:patching Aldo$

if i understood right i should patch the SSDT8... when i opne it and search for "Method (_INI", i get:

No.. You've found the _INI for your integrated graphics device.

The _INI for your discrete device is in SSDT7.
 
SSDT4 compiles without error using ACPI 4.0 (sometimes you have to think outside the box).

SSDT8 needs "Cleanup/Fix Errors (SSDT)" from the "--> Disable Nvidia/Radeon" section.

SSDT8 and SSDT4 are done :D thanks i have no errors..
i did not know that you could use ssdt using ACPI4.0 and ACPI5.0...i thought that i should put at 5.0 and that all...
 
No.. You've found the _INI for your integrated graphics device.

The _INI for your discrete device is in SSDT7.

so what should i do next? how can i disable it? i cant understand from the guide...
 
Back
Top