Misc Fixes

- Inital lint'ing
- Clean up README.md table
- Add CONTRIBUTING.md
- Add TROUBLESHOOTING.md
This commit is contained in:
Mykola Grymalyuk
2020-04-18 13:29:12 -06:00
parent fb33ef4979
commit 17f7c8aba3
43 changed files with 13509 additions and 164 deletions

View File

@@ -9,19 +9,19 @@ So to disable a specific GPU, we need to find a couple things:
## Finding the ACPI Path of the GPU
To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:
To find the PCI path of a GPU is fairly simple, best way to find it is running Windows:
* Open Device Manager
* Select Display Adapters, then right click your GPU and select Properties
* Under the Details Tab, search for "Location Paths"
* Note some GPUs may be hiding under "BIOS device name"
* Note some GPUs may be hiding under "BIOS device name"
![](https://cdn.discordapp.com/attachments/456913818467958789/675210740231176212/unknown.png)
![Credit to 1Revenger1 for the image](https://cdn.discordapp.com/attachments/683011276938543134/695396807739441232/unknown-4.png)
![](/images/Desktops/amd.png)
![Credit to 1Revenger1 for the image](/images/Desktops/nvidia.png)
The second "ACPI" is what we care about:
```
ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
```
@@ -31,6 +31,7 @@ Now converting this to an ACPI path is quite simple, remove the `#ACPI` and `#PC
```
`_SB_.PC02.BR2A.PEGP
```
And voila! We've found our ACPI path, now that we have everything we're ready to get cooking
## Making the SSDT
@@ -41,6 +42,7 @@ To start grab our [SSDT-GPU-DISABLE](https://github.com/khronokernel/Getting-Sta
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
Method (_SB.PCI0.PEG0.PEGP._DSM, 4, NotSerialized)
```
For our example, we'll change all mentions of :
* `PCI0` with `PC02`
@@ -49,4 +51,3 @@ For our example, we'll change all mentions of :
Hint: If your ACPI path is a bit shorter than the example, this is fine. Just make sure the ACPI paths are correct to your device, some users may also need to adapt `_SB_` to their path
## [Now you're ready to compile the SSDT!](/Manual/compile.md)

View File

@@ -5,21 +5,21 @@ What we'll be doing is hiding our actual EC and creating a fake Embedded Comtrol
To find out what EC you have, open your decompiled DSDT and search for `PNP0C09`. This should give you a result like this:
![](https://i.imgur.com/lQ4kpb9.png)
![](/images/Desktops/pnp.png)
As you can see our `PNP0C09` is found within the `Device (EC0)` meaning this is the device we want to hide from macOS(others may find `H_EC`, `ECDV`, etc, everyone's systems will be different). Now grab our SSDT-EC and uncomment the EC0 function(remove the `/*` and `*/` around it):
* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl)
* For Skylake and newer and all AMD systems
* [SSDT-EC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC.dsl)
* For Broadwell and older
* For Broadwell and older
```text
/* <- REMOVE THIS
External (_SB_.PCI0.LPCB.EC0, DeviceObj) <- Rename this
Scope (\_SB.PCI0.LPCB.EC0) <- Rename this
{
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin")) // Darwin = macOS
@@ -37,12 +37,12 @@ External (_SB_.PCI0.LPCB.EC0, DeviceObj) <- Rename this
But looking back at the screenshot above we notice something, our ACPI path is different: `PC00.LPC0` vs `PCI0.LPCB`. This is very important especially when you're dealing with Intel consumer vs Intel HEDT vs AMD, `PC00.LPC0` is common on Intel HEDT while `PCI0.SBRG` is common on AMD. And they even come with name variation such as `EC0`, `H_EC`, `PGEC` and `ECDV`, so there can't be a one size fits all SSDT, **always verify your path and device. DO NOT ASSUME**.
* Finding the LowPinCount path:
* Intel: Search `Name (_ADR, 0x001F0000)`
* AMD: Search `Name (_ADR, 0x00140003)`
* Finding the PCI path:
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
* Finding the LowPinCount path:
* Intel: Search `Name (_ADR, 0x001F0000)`
* AMD: Search `Name (_ADR, 0x00140003)`
* Finding the PCI path:
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
And make sure to scroll to the bottom as the new Fake EC function also need the correct path to replace the old EC. **Do not rename `Device (EC)`**, this is our fake EC we're using for macOS to play with so leave `Device (EC)` alone. **Just change the path!**
@@ -58,7 +58,7 @@ Note if you have an STA Method as well, see below: [STA Edge Case](/Desktops/des
> What happens if no `PNP0C09` show up?
So what this means: EC faking is not mandatory for booting, instead only **recommended for proper USB power**.
So what this means: EC faking is not mandatory for booting, instead only **recommended for proper USB power**.
So how do I make an SSDT without an EC? Well we'll only create a Fake EC for macOS to play with, this allows for AppleBusPowerController to load and handle our USB properly. To make the actual SSDT, its *almost* plug and play as no uncommenting needed. The main thing that needs to be changed:
@@ -67,16 +67,14 @@ So how do I make an SSDT without an EC? Well we'll only create a Fake EC for mac
We want to make sure the SSDT hooks into our DSDT correctly so we need to make sure the ACPI path is correct:
* Finding the LowPinCount path:
* Intel: Search `Name (_ADR, 0x001F0000)`
* AMD: Search `Name (_ADR, 0x00140003)`
* Finding the PCI path:
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
![](https://cdn.discordapp.com/attachments/456913818467958789/670148514197667840/Screen_Shot_2020-01-23_at_11.08.30_PM.png)
* Finding the LowPinCount path:
* Intel: Search `Name (_ADR, 0x001F0000)`
* AMD: Search `Name (_ADR, 0x00140003)`
* Finding the PCI path:
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
* AMD: Assume `PCI0`(most AMD DSDTs don't declare the PCI path directly)
![](/images/Desktops/lpc.png)
Once you find out, change `PCI0.LPCB` to your correct path:
@@ -118,5 +116,4 @@ The reason for this is that the real EC is considered disabled already.
USBX is universal across all systems, it just creates a USBX device that forces USB power properties. This is crucial for fixing Mics, DACs, Webcams, Bluetooth Dongles and other high power draw devices. This is not mandatory to boot but should be added in post-install if not before. Note that USBX is only used on skylake+ systems, Broadwell and older can ignore and that USBX requires a patched EC to function correctly
## [Now you're ready to compile the SSDT!](/Manual/compile.md)