Jump to content

Unable to disable GPU in SSDT/DSDT


Paolo7297

Recommended Posts

  • Administrators

So nVidia GeForce 840M defined under device PEGP within RP05@001C0004.

 

You should modify the _WAK method so that it turns off the dGPU. Right now it wakes it so even if you disable the dGPU at startup, a wake will re-enable it.

 

In SSDT-9.aml, you have a method EPON that must have been modified since I see it set ONOF to Zero. I would have expected it to set ONOF to One. I'd have kept it that way and created a new method called EPOF that does set ONOF to Zero. So you'd have the following code under \SB.PCI0.RP05.PEGP:

        Method (EPON, 0, Serialized)
        {
            Store (One, ONOF)
            Return (Zero)
        }


        Method (EPOF, 0, Serialized)
        {
            Store (Zero, ONOF)
            Return (Zero)
        }

`

You may then modify the _WAK method in DSDT to the following:

    Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
        If (LOr (LLess (Arg0, One), LGreater (Arg0, 0x05)))
        {
            Store (0x03, Arg0)
        }


        WAK (Arg0)
        ADBG ("_WAK")
        If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
        {
            // Remove those lines since there is no Device PEG0 in any BIOS tables
            // If (CondRefOf (\_SB.PCI0.PEG0.PEGP.EPON))
            // {
            //    \_SB.PCI0.PEG0.PEGP.EPON ()
            // }

            If (CondRefOf (\_SB.PCI0.RP05.PEGP.EPON))
            {
                \_SB.PCI0.RP05.PEGP.EPOF ()          // disables dGPU at Wake
            }
        [...]

and make sure to add the following at the top of the DSDT under the _SB_.PCI0.RP05.PEGP.EPON external method declaration:

    External (_SB_.PCI0.RP05.PEGP.EPOF, MethodObj)    // 0 Arguments (from opcode)

`

Now, in order to load your patched SSDT files,  you've got to revise the names you used because the SSDT will only load in the order SSDT, SSDT-1, SSDT-2, SSDT-3, ... Right now, only the SSDT.aml will load and I doubt any of your patched SSDT-6/-8/-9/-10 actually do do. Check through verbose mode.

Link to comment
Share on other sites

I think that all ssdts are loaded because graphics and brightness are working (I applied patches for them in ssdt-8).

In clover boot.log:

8:192  0:000  === [ ACPIPatchedAML ] ====================================
8:192  0:000  Start: Processing Patched AML(s): Unsorted
8:192  0:000  Inserting SSDT.AML from EFI\CLOVER\ACPI\patched ... Success
8:193  0:001  Inserting SSDT-10.AML from EFI\CLOVER\ACPI\patched ... Success
8:194  0:000  Inserting SSDT-9.AML from EFI\CLOVER\ACPI\patched ... Success
8:194  0:000  Inserting SSDT-8.AML from EFI\CLOVER\ACPI\patched ... Success
8:195  0:000  Inserting SSDT-6.AML from EFI\CLOVER\ACPI\patched ... Success
8:195  0:000  End: Processing Patched AML(s)
8:195  0:000  CPUBase=0 and ApicCPUBase=1 ApicCPUNum=4

So... I tried your method but everytime I boot my vivobook it's still here...

I don't know what to do...

I'm going to attach patched tables with your edits and original ones...

Thank you a lot

 

 

EDIT: I feel like an idiot... I forced Clover to load ssdts starting from 6 to 10 and now the problem is solved... Thanks!!

decompiled.zip

origin.zip

Link to comment
Share on other sites

×
×
  • Create New...