Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

Rehabman

having issues upgrading to High Sierra on my E6530 Dell

Attached is the Zip file that you request in this thread

Don't quite know how to disable nvidia video which seems to be the issue.
 

Attachments

  • RehabMan.zip
    20.1 MB · Views: 78
What you have here is not correct.
What you should do:
- remove *only* the EC related code from HGOF
- call _OFF from _INI (that you did correctly)
- copy the EC related code from HGOF (and only the EC related code) and code it such that it only runs when Arg0==3 and Arg1==1 (EC ready)

Hi Rehabman, thanks for the reply. I did what you mentioned but the system again won't boot. It is the same as it was before patching which is stuck at ioconsoleuser. Attached is my clover folder for your perusal. Thank you.
 

Attachments

  • CLOVER.zip
    2.5 MB · Views: 87
You did not follow the guide correctly.

EC related code in _OFF:
Code:
            Store (^^^LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            ^^^LPCB.EC0.WRAM (0x0521, Local0)
            ^^^LPCB.EC0.WRAM (0x0520, 0x95)
            ^^^LPCB.EC0.WRAM (0x03A4, Zero)
            ^^^LPCB.EC0.WRAM (0x03A5, Zero)

That code must move to _REG.
Resulting _REG should be:
Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (Arg1, ECFL)
                }

                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))
                {
                     Store (^^^LPCB.EC0.RRAM (0x0521), Local0)
                     And (Local0, 0xCF, Local0)
                     ^^^LPCB.EC0.WRAM (0x0521, Local0)
                     ^^^LPCB.EC0.WRAM (0x0520, 0x95)
                     ^^^LPCB.EC0.WRAM (0x03A4, Zero)
                     ^^^LPCB.EC0.WRAM (0x03A5, Zero)
                }
            }

Note that the compiler will optimize:
Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (Arg1, ECFL)
                }

                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))
                {
                    Store (RRAM (0x0521), Local0)
                    And (Local0, 0xCF, Local0)
                    WRAM (0x0521, Local0)
                    WRAM (0x0520, 0x95)
                    WRAM (0x03A4, Zero)
                    WRAM (0x03A5, Zero)
                }
            }

What you wrote: "^WRAM._OFF ()" is complete nonsense.

Resulting _OFF with EC related code removed:
Code:
        Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
        {
            If (LEqual (SVID, 0xFFFFFFFF))
            {
                Return (Zero)
            }

            ^^^GFX0.SAVO ()
            Store (One, LNKD)
            While (LNotEqual (LNKS, Zero))
            {
                Sleep (One)
            }

            Store (Zero, AFE4)
            Store (One, AFE5)
            Store (One, LDPS)
            SGPL (0x32, One, Zero)
            Sleep (0x0A)
            SGPL (0x36, One, Zero)
            Store (Zero, ^^^GFX0.HPWR)
            Return (Zero)
        }

Note: I don't know why you removed the GFX0.SAVO call!

Correct _INI, calling _PS3:
Code:
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            If (LNotEqual (SVID, 0xFFFFFFFF))
            {
                Store (Zero, NHDA)
                Sleep (0x32)
            }
            _PS3()
        }

Make sure those are the *only* changes you make related to _OFF/_PS3/etc.


I followed instructions but the results did not change :(
 

Attachments

  • Archive edit 10.zip
    4.1 MB · Views: 82
Hi Rehabman, thanks for the reply. I did what you mentioned but the system again won't boot. It is the same as it was before patching which is stuck at ioconsoleuser. Attached is my clover folder for your perusal. Thank you.

As per guide, DropOem must be set true with patched SSDTs in ACPI/patched.
You have it set false.
I didn't check anything else, due to this obvious mistake.
 
I followed instructions but the results did not change :(

Call DOFF or _OFF directly instead of _PS3 (there are several conditionals for DOFF and _PS3 that may prevent _OFF from being executed).

Also, SSDT-DiscreteSpoof.aml is mutually exclusive to this solution. Don't use both together.
 
Last edited:
Call DOFF or _OFF directly instead of _PS3 (there are several conditionals for DOFF and _PS3 that may prevent _OFF from being executed).

Also, SSDT-DiscreteSpoof.aml is mutually exclusive to this solution. Don't use both together.

I edited call _DOFF -> DSDT error, i call _OFF and remove SSDT-DiscreteSpoof.aml it ok, maybe problems solved. Thanks you so much!!!
 

Attachments

  • RAZER.ioreg
    6.7 MB · Views: 131
Back
Top