Contribute
Register

[Guide] Disabling discrete graphics in dual-GPU laptops

@RehabMan

i cant find the the SPIN or something in _OFF section from sdst9
Take a look at the clover F4 output of SSDT9 here:
Code:
        Method (_OFF, 0, Serialized)  // _OFF: Power Off
        {
            If (LEqual (CTXT, Zero))
            {
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB) /* \_SB_.PCI0.RP01.PEGP.VGAB */
                }

                Store (One, CTXT) /* \_SB_.PCI0.RP01.PEGP.CTXT */
            }

            \_SB.PCI0.HGOF (One)

I dont find what line to put into REG section of DSDT....
no spin etc.

Without any EC access in _OFF, nothing to do regarding moving to _REG/etc.
But your _OFF calls HGOF, and HGOF has EC related code that must be moved to _REG.
 
Hello @
RehabMan Please help me to install macOS High Sierra...I got installation error
"Window Server Service only ran for 10 seconds"my laptop detail is given below:
Laptop Model-DELL Inspiron 15 3537
Ram-12GB
Graphics-Intel HD Graphics 4400 and AMD Radeon HD Graphics 8670M
 
Without any EC access in _OFF, nothing to do regarding moving to _REG/etc.
But your _OFF calls HGOF, and HGOF has EC related code that must be moved to _REG.

When i put
\_SB.PCI0.HGOF (One)
Into _REG section of DSDT, compile error, cant find object.

So i just INI mod Patch in SSDT-8 with external off. Looks good when restart without ssdt spoof
 
When i put
\_SB.PCI0.HGOF (One)
Into _REG section of DSDT, compile error, cant find object.

You should not be doing that.
Instead, the EC related code in HGOF must be moved to _REG.
Read the guide carefully.
 
You should not be doing that.
Instead, the EC related code in HGOF must be moved to _REG.
Read the guide carefully.

Found HGOF method on SSDT 7
Code:
      Method (HGOF, 1, Serialized)
        {
            If (LNotEqual (SGGP, One))
            {
                Return (Zero)
            }

            Store (Arg0, RPIX)
            If (LEqual (CCHK (Zero, RPIX), Zero))
            {
                Return (Zero)
            }

            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
            If (LEqual (RPIX, One))
            {
                Store (LCT1, ELCT)
                Store (SVI1, HVID)
                Store (SDI1, HDID)
                Store (LRE1, LTRE)
                Store (One, LKD1)
            }
            ElseIf (LEqual (RPIX, 0x09))
            {
                Store (LCT9, ELCT)
                Store (SVI9, HVID)
                Store (SDI9, HDID)
                Store (LRE9, LTRE)
                Store (One, LKD9)
            }

            If (LEqual (RPIX, One))
            {
                While (LNotEqual (LKS1, Zero))
                {
                    Sleep (One)
                }
            }
            ElseIf (LEqual (RPIX, 0x09))
            {
                While (LNotEqual (LKS9, Zero))
                {
                    Sleep (One)
                }
            }

            SGPO (HRE0, HRG0, HRA0, One)
            SGPO (PWE0, PWG0, PWA0, Zero)
            Return (Zero)
        }
all below HGOF need to go to _REG?
 
Found HGOF method on SSDT 7
Code:
      Method (HGOF, 1, Serialized)
        {
            If (LNotEqual (SGGP, One))
            {
                Return (Zero)
            }

            Store (Arg0, RPIX)
            If (LEqual (CCHK (Zero, RPIX), Zero))
            {
                Return (Zero)
            }

            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
            If (LEqual (RPIX, One))
            {
                Store (LCT1, ELCT)
                Store (SVI1, HVID)
                Store (SDI1, HDID)
                Store (LRE1, LTRE)
                Store (One, LKD1)
            }
            ElseIf (LEqual (RPIX, 0x09))
            {
                Store (LCT9, ELCT)
                Store (SVI9, HVID)
                Store (SDI9, HDID)
                Store (LRE9, LTRE)
                Store (One, LKD9)
            }

            If (LEqual (RPIX, One))
            {
                While (LNotEqual (LKS1, Zero))
                {
                    Sleep (One)
                }
            }
            ElseIf (LEqual (RPIX, 0x09))
            {
                While (LNotEqual (LKS9, Zero))
                {
                    Sleep (One)
                }
            }

            SGPO (HRE0, HRG0, HRA0, One)
            SGPO (PWE0, PWG0, PWA0, Zero)
            Return (Zero)
        }
all below HGOF need to go to _REG?

This code is the EC related code:
Code:
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
 
This code is the EC related code:
Code:
            Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
            And (Local0, 0xCF, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
            \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
            \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)

so in my dsdt reg would be:
Code:
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (Arg1, ECFL)
                }
                //added due disabling mx150
                //added to turn nvidia/radeon off
                If (LAnd(LEqual(Arg0,3),LEqual(Arg1,1)))
                {
               
               
                Store (\_SB.PCI0.LPCB.EC0.RRAM (0x0521), Local0)
                And (Local0, 0xCF, Local0)
                \_SB.PCI0.LPCB.EC0.WRAM (0x0521, Local0)
                \_SB.PCI0.LPCB.EC0.WRAM (0x0520, 0x89)
                \_SB.PCI0.LPCB.EC0.WRAM (0x03A4, Zero)
                \_SB.PCI0.LPCB.EC0.WRAM (0x03A5, Zero)
                } 
               
               
            }

Right?
 
just got kp after several minutes.

in dsdt
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, 0x89)
                    WRAM (0x03A4, Zero)
                    WRAM (0x03A5, Zero)
                }
            }
 

Attachments

  • kp.txt
    10 KB · Views: 207
just got kp after several minutes.

in dsdt
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, 0x89)
                    WRAM (0x03A4, Zero)
                    WRAM (0x03A5, Zero)
                }
            }

"Problem Reporting" files are incomplete.
Read FAQ, "Problem Reporting" again. Carefully. Attach all requested files/output.
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
Use the gen_debug.sh tool mentioned in the FAQ, that way it is less likely you'll omit something.
 
Back
Top