mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Misc Fixes
- Inital lint'ing - Clean up README.md table - Add CONTRIBUTING.md - Add TROUBLESHOOTING.md
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
|
||||
So what this SSDT does is create a PNLF device for macOS to play with, specifically one with a hardware ID of `APP0002`. WhateverGreen will handle the rest of the work
|
||||
|
||||
|
||||
No configuration required for most, just drop the prebuilt file into your EFI:
|
||||
|
||||
* [SSDT-PNLF](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-PNLF.aml)
|
||||
* For most users
|
||||
* For most users
|
||||
* [SSDT-PNLFCFL](https://i.applelife.ru/2019/12/463488_SSDT-PNLFCFL.aml.zip)
|
||||
* For Coffee Lake and newer
|
||||
* For Coffee Lake and newer
|
||||
|
||||
Note: there are some rare cases where the iGPU is called `GPU0` or `VID`in the DSDT, you can double check by searching for `PCI0.GFX0`, `PCI0.VID` and `PCI0.GPU0`. Whichever shows up is your device
|
||||
|
||||
@@ -16,6 +16,7 @@ If Windows has been installed on the device, you can also do the following:
|
||||
```text
|
||||
Device Manager -> Display Adapters -> Properties -> Details > BIOS device name
|
||||
```
|
||||
|
||||
* Note some GPUs may be hiding under "BIOS device name"
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -13,12 +13,12 @@ How this works is that we call the `.off` method found on Optimus GPUs, this is
|
||||
|
||||
To start, grab [SSDT-dGPU-Off.dsl](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-dGPU-Off.dsl.zip)
|
||||
|
||||
|
||||
Next we need to get on Windows, and head to the following:
|
||||
|
||||
```text
|
||||
Device Manager -> Display Adapters -> dGPU -> Properties -> Details > BIOS device name
|
||||
```
|
||||
|
||||
* Note some GPUs may be hiding under "BIOS device name"
|
||||
|
||||
This should provided you with an ACPI path for your dGPU, most commonly:
|
||||
@@ -26,8 +26,7 @@ This should provided you with an ACPI path for your dGPU, most commonly:
|
||||
* Nvidia dGPU: `\_SB.PCI0.PEG0.PEGP`
|
||||
* AMD dGPU: `\_SB.PCI0.PEGP.DGFX`
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
Now with that, we'll need to change the ACPI path in the SSDT. Main sections:
|
||||
|
||||
@@ -43,7 +42,6 @@ Once adapted to your config, head to the compile section
|
||||
|
||||
* For those with sleep issues, you can refer to the original [Rehabman thread](https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/)
|
||||
|
||||
|
||||
## Bumblebee Method
|
||||
|
||||
With some machines, the simple `.off` call won't keep the card off properly, that's where the Bumblebee method comes in. This SSDT will actually send the dGPU into D3 state being the lowest power state a device can support. Credit to Mameo for the original adaptation.
|
||||
@@ -79,9 +77,9 @@ If ((CondRefOf (\_SB.PCI0.PEG0.PEGP._DSM) && CondRefOf (\_SB.PCI0.PEG0.PEGP._PS3
|
||||
|
||||
```text
|
||||
// Card Off
|
||||
\_SB.PCI0.PEG0.PEGP._PS3 ()
|
||||
\_SB.PCI0.PEG0.PEGP._PS3 ()
|
||||
```
|
||||
|
||||
Once adapted to your config, head to the compile section
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
# Fixing Embedded Controller (Laptop)
|
||||
|
||||
|
||||
To fix the ECs found in laptops, we'll be renaming them to look like the ones macOS expects. The reason for this is that many laptops break when you turn off their EC with an SSDT. So this is why we can't use the fancy SSDTTime to make a patch for us.
|
||||
|
||||
To find out what EC you have, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this:
|
||||
|
||||

|
||||

|
||||
|
||||
As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is the device we want to rename.
|
||||
|
||||
@@ -19,14 +18,13 @@ When this happens you need to figure out which is the main and which is not, it'
|
||||
|
||||
Note that only the main EC needs renaming, if you only have one `PNP0C09` then it is automatically your main regardless of properties.
|
||||
|
||||
|
||||
> What if my main `PNP0C09` device is already called `Device (EC)`?
|
||||
|
||||
Mainly relevant for Lenovo and a few other OEMs, when this happens that means that your Embedded Controller is ready to use in macOS! Do make sure that this `Device (EC)` is actually your main EC and not a secondary one.
|
||||
Mainly relevant for Lenovo and a few other OEMs, when this happens that means that your Embedded Controller is ready to use in macOS! Do make sure that this `Device (EC)` is actually your main EC and not a secondary one.
|
||||
|
||||
**And please verify that the DSDT hasn't already been patched by Clover or OpenCore**, please dump it without booting either of them to be sure or triple check that there aren't any EC renames in your config already
|
||||
|
||||

|
||||

|
||||
|
||||
For those having issues, you can also check `Device Manager -> Embedded Controller -> BIOS device Name`. Widows will only report the main EC so will save you some headache on that
|
||||
|
||||
@@ -41,7 +39,7 @@ As you can see from the table below, we'll be renaming our EC listed in the DSDT
|
||||
|change ECDV to EC|45434456|45435f5f|
|
||||
|change PGEC to EC|50474543|45435f5f|
|
||||
|
||||
## Inside your config:
|
||||
## Inside your config
|
||||
|
||||
| Comment | String | Change XXXX to EC |
|
||||
| :--- | :--- | :--- |
|
||||
@@ -51,5 +49,4 @@ As you can see from the table below, we'll be renaming our EC listed in the DSDT
|
||||
| Find | Data | xxxxxxxx |
|
||||
| Replace | Data | xxxxxxxx |
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
@@ -8,8 +8,7 @@ With most modern laptop DSDTs, there's a variable called `GPEN` or `GPHD` which
|
||||
|
||||
So first things we need to do is find out what variable is used to enable our GPI0 device, lets open up our decompiled SSDT and search for `Device (GPI0)`. Should give you a desult similar to this:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
What we care about from this is the `_STA` method:
|
||||
|
||||
@@ -24,24 +23,25 @@ Method (_STA, 0, NotSerialized)
|
||||
Return (0x0F)
|
||||
}
|
||||
```
|
||||
|
||||
What we want is for this to always return `0x0F` when booting macOS, so we want to make an SSDT that will return `GPHD == Zero` in macOS.
|
||||
|
||||
**NOTE that you may have the other way around where GPHD needs to be set as `One` to return `0x0F`**. And your device name may also be different, don't throw random SSDTs in thinking it'll work
|
||||
|
||||
Once you found the variable and what it should be set to, grab a copy of [SSDT-GPI0.dsl](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) and make the required edits. Then clean up with compiling it
|
||||
|
||||
## More examples
|
||||
|
||||
## More examples:
|
||||
|
||||

|
||||

|
||||
|
||||
With this example, we can see that we need both `SBRG` and `GPEN` to return `One`. If only one is present, it'll create some issues so in our SSDT we'll want to have both of them return `One`:
|
||||
|
||||
```
|
||||
DefinitionBlock("", "SSDT", 2, "ACDT", "GPI0", 0)
|
||||
{
|
||||
External(GPEN, FieldUnitObj)
|
||||
External(SBRG, FieldUnitObj)
|
||||
|
||||
|
||||
Scope (\)
|
||||
{
|
||||
If (_OSI ("Darwin"))
|
||||
|
||||
Reference in New Issue
Block a user