Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Joined
Nov 28, 2011
Messages
42
Motherboard
Asus K401UB (Clover)
CPU
i7-6500U
Graphics
Nvidia Geforce 940M + HD520
Mac
MacBook Pro
Classic Mac
iBook, Power Mac, PowerBook
Mobile Phone
iOS
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

Joined
Jul 23, 2013
Messages
41
Motherboard
Asus S46CM (Clover)
CPU
i5 3317U + HM76
Graphics
HD4000/GT635M(disable) 1366x768
Mac
MacBook Air
Classic Mac
Apple
Mobile Phone
Android
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

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
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.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
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:
Joined
Jul 23, 2013
Messages
41
Motherboard
Asus S46CM (Clover)
CPU
i5 3317U + HM76
Graphics
HD4000/GT635M(disable) 1366x768
Mac
MacBook Air
Classic Mac
Apple
Mobile Phone
Android
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

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,028
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
MacBook Air
Mobile Phone
iOS
I edited call _DOFF -> DSDT error,
FYI: The method is named DOFF not _DOFF (_DOFF can't be used as it is 5 characters... ACPI names are limited to 4).
 
Top