Contribute
Register

[HELP] Disable HD 7650M in DSDT

Status
Not open for further replies.
Delete 2 Drop table entries in config.plist and check "Drop OEM" in SSDT, then it will be like "DropSSDT" in Chameleon. Did try try removing _OFF in _WAK?

Just done that!
finally, I have what I want: sleep probably and disable AMD Graphic. Thank you so much!

Can you teach me how to do that? so I can make a patch file to patch myself next time I update BIOS :D

P/S: I trying RehabMan's method too, it seem to be easier!
 
So remove _OFF in _WAK works?

I copied the _OFF Method from your SSDT to your DSDT, then resolve errors, then I call the _OFF function in _SB._INI, IGPU._INI, _WAK methods, but it seem like only _SB._INI is enough.
 
So remove _OFF in _WAK works?

I copied the _OFF Method from your SSDT to your DSDT, then resolve errors, then I call the _OFF function in _SB._INI, IGPU._INI, _WAK methods, but it seem like only _SB._INI is enough.

Yes, just need _OFF method in _SB._INI

I have new problem now: I apply patches of RehabMan to SSDT.aml file, and MaciASL report no error (some warnings). But after saved, close MaciASL and open this file again, it report 7 error, what happen when I saved this file?
 
Yes, just need _OFF method in _SB._INI

I have new problem now: I apply patches of RehabMan to SSDT.aml file, and MaciASL report no error (some warnings). But after saved, close MaciASL and open again, it report 7 error, what happen when I saved this file?

That is normal. The errors are caused by bugs in Intel's iasl disassembler. The resulting file is valid though.

Note: Unless there is a problem with the LNKS loop, there is *no need* to recompile the acpi_ssdt.aml file. You can simply use it as-is from Linux extract.
 
The patch is not related to Chameleon or Clover, it's in your DSDT and SSDT tables.

Thanks man, waiting for all the experiments and its after affects are over.. :)
 
So anyone can paste a final working DSDT patch for switching off GPU? Of course without the problem of sleep.
 
You could test it instead. If you use Clover with config.plist DropOEM=false + 2 drop tables, just patch your dsdt (back up first). If you use Chameleon with DropSSDT=true or Clover with DropOEM=true + 0 drop tables, extract apci_ssdt.aml containing "SgTabl" table, rename to SSDT-1.aml and put it in /Extra or /EFI/Clover/ACPi/patched/ and patch DSDT.
Code:
into definitionblock code_regex . insert
begin
External (\_SB_.PCI0.PEGP.DGFX._OFF, MethodObj)\n
end;

into method label _INI parent_label _SB code_regex . insert
begin
\_SB_.PCI0.PEGP.DGFX._OFF()\n
end;
 
You could test it instead. If you use Clover with config.plist DropOEM=false + 2 drop tables, just patch your dsdt (back up first). If you use Chameleon with DropSSDT=true or Clover with DropOEM=true + 0 drop tables, extract apci_ssdt.aml containing "SgTabl" table, rename to SSDT-1.aml and put it in /Extra or /EFI/Clover/ACPi/patched/ and patch DSDT.
Code:
into definitionblock code_regex . insert
begin
External (\_SB_.PCI0.PEGP.DGFX._OFF, MethodObj)\n
end;

into method label _INI parent_label _SB code_regex . insert
begin
\_SB_.PCI0.PEGP.DGFX._OFF()\n
end;

Thanks nguyenmac :) I'll post the update after work.
 
I forgot that we also need to remove While loop in ssdt. So you should do following:

- Extract acpi_ssdt.aml with table name "SgTabl", apply the patch and rename it to SSDT-1.aml, put it to Clover/ACPI/Patched or /Extra folder:
Code:
// Rehabman fixes
into scope label \_SB.PCI0.GFX0 code_regex (OperationRegion.*)VRMB\s+\(VRMS\s+\(\)\), replace_matched begin %1VRMB(),VRMS())\n end;
into scope label \_SB.PCI0.GFX0 code_regex (Field\s+\(REVD,.*\n.*\n.*\n.*\n.*\})\) replace_matched begin %1 end;

into scope label \_SB.PCI0.PEGP code_regex (OperationRegion.*)\\XBAS\s+\(0x9000\), replace_matched begin %1\\XBAS,0x9000)\n end;
into scope label \_SB.PCI0.PEGP code_regex (Field\s+\(RPCX,.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\})\) replace_matched begin %1 end;

into scope label \_SB.PCI0.PEGP.DGFX code_regex (OperationRegion.*)\\GBAS\s+\(0x60\), replace_matched begin %1\\GBAS,0x60)\n end;
into scope label \_SB.PCI0.PEGP.DGFX code_regex (Field\s+\(GPIO,.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\})\) replace_matched begin %1 end;

into scope label \_SB.PCI0.PEGP.DGFX code_regex (OperationRegion.*)\\EECP\s+\(0x14\), replace_matched begin %1\\EECP,0x14)\n end;
into scope label \_SB.PCI0.PEGP.DGFX code_regex (Field\s+\(PCAP.*\n.*\n.*\n.*\n.*\})\) replace_matched begin %1 end;

into definitionblock code_regex External\s+\(\\_SB_\.PCI0\.GFX0\.DD02\._BCM,\s+IntObj\) replace_matched begin External(\\_SB_.PCI0.GFX0.DD02._BCM, MethodObj)
end;
into method label _BCM parent_label DD02 code_regex Return\s+\(([^\)]*)\)\n.*Arg0 replace_matched begin Return(%1(Arg0)) end;

// Remove While loop
into method label _OFF parent_label \_SB.PCI0.PEGP.DGFX code_regex While\s+\(([^\}]*)\} remove_matched;

- For Clover, use DropOEM=true and remove Droptables entries, or use DropOEM=false and add this to existing 2 drop tables:
Code:
	<key>DropTables</key>
		<array>
			<dict>
				<key>Signature</key>
				<string>SSDT</string>
				<key>TableId</key>
				<string>SgTabl</string>
			</dict>
		</array>

- Apply the patch to DSDT:
Code:
into definitionblock code_regex . insert
begin
External (\_SB_.PCI0.PEGP.DGFX._OFF, MethodObj)\n
end;

into method label _INI parent_label _SB code_regex . insert
begin
\_SB_.PCI0.PEGP.DGFX._OFF()\n
end;
 
FYI: I've captured these work-in-progress patches in the Probook patches repo. You can use MaciASL to apply them directly from the repo.

It will be interesting to find out if the "loop deletion" is for sure necessary and whether the whole thing works or not...
 
Status
Not open for further replies.
Back
Top