mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-03 20:39:48 -08:00
Misc lint'ing
This commit is contained in:
@@ -10,18 +10,17 @@
|
||||
* Z370 (Gigabyte and AsRock boards with newer BIOS versions)
|
||||
* Z390
|
||||
* 400 series (Cometlake)
|
||||
* 495 series (Icelake)
|
||||
* 495 series (Icelake)
|
||||
|
||||
So on newer Intel 300 series motherboards, manufactures started pushing for a new type of system clock: **AWAC**( **A** **W**eird **A**ss **C**lock). One small problem, macOS doesn't know what the hell an AWAC clock is instead only familiar with the legacy **RTC**(**R**eal **T**ime **C**lock). So we need to figure out how to bring back the old clock, thats where `SSDT-AWAC` and `SSDT-RTC0` come in:
|
||||
|
||||
* [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl)
|
||||
* Disables AWAC and enables RTC
|
||||
* In your DSDT, there's a variable called `STAS` used for holding either a `One` or `Zero` to determine which clock to use(`One` for RTC and `Zero` for AWAC)
|
||||
|
||||
* [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl)
|
||||
* Used for creating a fake RTC device for macOS to play with
|
||||
* In very rare circumstances, some DSDTs may not have a legacy RTC to fall back on. When this happens, we'll want to create a fake device to make macOS happy
|
||||
* Disables AWAC and enables RTC
|
||||
* In your DSDT, there's a variable called `STAS` used for holding either a `One` or `Zero` to determine which clock to use(`One` for RTC and `Zero` for AWAC)
|
||||
|
||||
* [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl)
|
||||
* Used for creating a fake RTC device for macOS to play with
|
||||
* In very rare circumstances, some DSDTs may not have a legacy RTC to fall back on. When this happens, we'll want to create a fake device to make macOS happy
|
||||
|
||||
Note: AWAC actually stands for ACPI Wake Alarm Counter/Clock for those curious, though I'll forever know it as A Weird Ass Clock ;p
|
||||
|
||||
@@ -43,5 +42,4 @@ By default the SSDT uses `LPCB`, you can check what your system uses by just sea
|
||||
|
||||

|
||||
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
@@ -96,7 +96,7 @@ When this happens you need to figure out which is the main and which is not, it'
|
||||
|
||||
Note if you have an STA Method as well, see below: [STA Edge Case](/Desktops/desktop-ec.md#sta-edge-case)
|
||||
|
||||
### What happens if no `PNP0C09` show up?
|
||||
### What happens if no `PNP0C09` show up
|
||||
|
||||
This means you only need to fake an Embedded Controller rather so that AppleBusPowerController will load and handle USB power properly and continue booting. To make the actual SSDT, its *almost* plug and play as no uncommenting needed. The main thing that needs to be changed:
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ This SSDT is required for all "true" 300 series motherboards and newer(Z370 is e
|
||||
* H370
|
||||
* Z390
|
||||
* 400 series (Cometlake)
|
||||
* 495 series (Icelake)
|
||||
* 495 series (Icelake)
|
||||
|
||||
By default it uses `PCI0.LPCB` for the PCI and LowPinCount path. The device names can vary between `PC00` and `PCI0` for PCI path and `LPCB`, `LBC` and `LBC0` for LowPinCount path. To see what you have:
|
||||
|
||||
* Finding the LowPinCount path:
|
||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
||||
* Finding the PCI path:
|
||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
||||
* Finding the LowPinCount path:
|
||||
* Intel: Search `Name (_ADR, 0x001F0000)`
|
||||
* Finding the PCI path:
|
||||
* Intel: Search `PNP0A08` (If multiple show up, use the first one)
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -4,13 +4,15 @@ CPU naming is fairly easy to figure out as well, open your decompiled DSDT and s
|
||||
|
||||

|
||||
|
||||
As we can see, the first processor in our list is `PR00`. This is what we'll be applying the `plugin-type=1` property too. Now grab [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) and replace the default `CPU0` with our `PR00`. There's a couple things to note:
|
||||
As we can see, the first processor in our list is `PR00`. This is what we'll be applying the `plugin-type=1` property too. Now grab [SSDT-PLUG](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-PLUG.dsl.zip) and replace the default `CPU0` with our `PR00`. There's a couple things to note:
|
||||
|
||||
* There's 2 mentions of CPU0 to change
|
||||
* The `PR` path may need to be changed, in our example we can see that our `PR00` has `SB` in front.
|
||||
|
||||
So in our final example, we'd have `_SB_.PR00` and `\_SB.PR00`
|
||||
|
||||
* **Note**: If you're having issues, see the [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera for example on what other ACPI paths may look like.
|
||||
|
||||
There are also some edge cases with `Processor`, specifically on HEDT series like X79, X99 and X299. This edge case is that the ACPI path is much longer and not so obvious:
|
||||
|
||||

|
||||
@@ -21,7 +23,6 @@ If we then search for instances of `CP00` we find that it's ACPI path is `SB.SCK
|
||||
|
||||
So for this X299 board, we'd change `\_PR.CPU0` with `\_SB.SCK0.CP00` and `External (_PR_.CPU0, ProcessorObj)` with `External (_SB_.SCK0.CP00, ProcessorObj)`
|
||||
|
||||
|
||||
```text
|
||||
External (_PR_.CPU0, ProcessorObj) <- Rename this
|
||||
|
||||
|
||||
@@ -2,18 +2,16 @@
|
||||
|
||||
This section of the guide refers to fixing AppleSMBus support in macOS, what is AppleSMBus? Well this mainly handles the System Management Bus, which has many functions like:
|
||||
|
||||
|
||||
* AppleSMBusController
|
||||
* Aids with correct temperature, fan, voltage, ICH, etc readings
|
||||
* Aids with correct temperature, fan, voltage, ICH, etc readings
|
||||
* AppleSMBusPCI
|
||||
* Same idea as AppleSMBusController except for low bandwidth PCI devices
|
||||
* Same idea as AppleSMBusController except for low bandwidth PCI devices
|
||||
* Memory Reporting
|
||||
* Aids in proper memory reporting and can aid in getting better kernel panic details if memory related
|
||||
* Other things SMBus does: [SMBus wiki](https://en.wikipedia.org/wiki/System_Management_Bus)
|
||||
* Aids in proper memory reporting and can aid in getting better kernel panic details if memory related
|
||||
* Other things SMBus does: [SMBus wiki](https://en.wikipedia.org/wiki/System_Management_Bus)
|
||||
|
||||
For install purposes, this SSDT isn't needed but for post-install it's recommended to put the final touches on your hack.
|
||||
|
||||
|
||||
So to get started, we'll want to grab our SMBus SSDT:
|
||||
|
||||
* [SSDT-SBUS-MCHC.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-SBUS-MCHC.dsl)
|
||||
@@ -34,6 +32,7 @@ Scope (_SB.PCI0) <- Rename this
|
||||
|
||||
Device (_SB.PCI0.SBUS.BUS0) <- Rename this
|
||||
```
|
||||
|
||||
To find the correct pathing for your devices, grab [Hackintool](https://www.tonymacx86.com/threads/release-hackintool-v3-x-x.254559/) ([Github link](https://github.com/headkaze/Hackintool)) and head to the PCI tab:
|
||||
|
||||

|
||||
@@ -41,14 +40,13 @@ Look for the SMBus device under Subclass, then look beside and you'll see the AC
|
||||
|
||||
* `/PC00@0/SMBS@1F,4` -> `PC00.SMBS`
|
||||
|
||||
|
||||
Once finished, it'll look something like this:
|
||||
|
||||
```text
|
||||
External (_SB_.PC00, DeviceObj) <- Renamed
|
||||
External (_SB_.PC00.SMBS.BUS0, DeviceObj) <- Renamed
|
||||
|
||||
Scope (_SB.PC00)
|
||||
Scope (_SB.PC00)
|
||||
{
|
||||
Device (MCHC)
|
||||
{
|
||||
@@ -65,5 +63,4 @@ For those having issues, you can also check Device Manager -> CPU -> BIOS device
|
||||
|
||||
**Note**: The MCHC is actually the DRAM controller, similar idea to SMBus for fixing memory reporting
|
||||
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
@@ -17,7 +17,6 @@ So to spoof the GPU, we need to find a couple things:
|
||||
* ACPI Path of the GPU
|
||||
* [SSDT-GPU-SPOOF](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPU-SPOOF.dsl.zip)
|
||||
|
||||
|
||||
## Finding a suitable PCI ID
|
||||
|
||||
To find a suitable PCI ID, we'll be using [PCI ID Repository](https://pci-ids.ucw.cz/read/PC/1002) which has a full database of all AMD GPUs. For this example, we'll be creating a Spoof SSDT for the R9 390. For a full list of supported GPUs, please see the [GPU Buyers Guide](https://dortania.github.io/GPU-Buyers-Guide/). The closest match to this GPU would be the 390X, and looking on that site near the top gives us this:
|
||||
@@ -25,6 +24,7 @@ To find a suitable PCI ID, we'll be using [PCI ID Repository](https://pci-ids.uc
|
||||
```
|
||||
Vendor 1002 -> Device 1002:67b0
|
||||
```
|
||||
|
||||
Now lets break this down into a device ID we can use:
|
||||
|
||||
* `1002`: The vendor ID, all AMD devices have this ID
|
||||
@@ -39,25 +39,26 @@ Buffer (0x04)
|
||||
0xB0, 0x67, 0x00, 0x00
|
||||
},
|
||||
```
|
||||
|
||||
As you can see, the bytes are swapped in pairs. Keep this in mind when we make our SSDT
|
||||
|
||||
The specifics are due to [Endianness](https://en.wikipedia.org/wiki/Endianness) for those who are curious
|
||||
|
||||
## 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"
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
The second "ACPI" is what we care about:
|
||||
|
||||
```
|
||||
ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
|
||||
```
|
||||
@@ -67,6 +68,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
|
||||
@@ -77,6 +79,7 @@ To start grab our [SSDT-GPU-SPOOF](https://github.com/dortania/Getting-Started-W
|
||||
External (_SB_.PCI0, DeviceObj)
|
||||
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
|
||||
```
|
||||
|
||||
For our example, we'll change all mentions of :
|
||||
|
||||
* `PCI0` with `PC02`
|
||||
@@ -89,6 +92,7 @@ Now that the ACPI pathing is correct, we can finally apply our fake ID!!!
|
||||
So the 2 parts we want to change:
|
||||
|
||||
**device ID**:
|
||||
|
||||
```
|
||||
"device-id",
|
||||
Buffer (0x04)
|
||||
@@ -98,6 +102,7 @@ Buffer (0x04)
|
||||
```
|
||||
|
||||
**Model**:
|
||||
|
||||
```
|
||||
"model",
|
||||
Buffer ()
|
||||
@@ -106,8 +111,6 @@ Buffer ()
|
||||
}
|
||||
```
|
||||
|
||||
`"device-id"` will be set to our PCI ID that we found in "Finding a suitable PCI ID" and `"model"` is mainly cosmetic
|
||||
|
||||
`"device-id"` will be set to our PCI ID that we found in "Finding a suitable PCI ID" and `"model"` is mainly cosmetic
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ So this is mainly needed for GPUs that are not natively supported out of the box
|
||||
* HIS
|
||||
* VisionTek
|
||||
|
||||
Instead, these GPUs need to be flashed to a model that works best in macOS which gernally being Sapphire. This is the brand that AMD uses for making their reference cards and what Apple bases a lot of their GPU logic off of.
|
||||
Instead, these GPUs need to be flashed to a model that works best in macOS which gernally being Sapphire. This is the brand that AMD uses for making their reference cards and what Apple bases a lot of their GPU logic off of.
|
||||
|
||||
One small problem, flashing VBIOSes can be a bit dangerous and can even brick a card. So for us, we'll be injecting one via an SSDT that will only load in macOS. This means 2 things:
|
||||
|
||||
@@ -22,7 +22,6 @@ So to force a VBIOS onto the GPU, we need to find a couple things:
|
||||
* ACPI Path of the GPU
|
||||
* [SSDT-VBIOS]()
|
||||
|
||||
|
||||
## Finding a suitable VBIOS
|
||||
|
||||
To find a suitable VBIOS, we'll be using [TechPowerUps Video BIOS Collection](https://www.techpowerup.com/vgabios/) which has a full database of basically all GPU VBIOSes. For this example, we'll be creating a VBIOS SSDT for the XFX RX 560 4GB. Now lets pull up the [Sapphire RX 560 4GB](https://www.techpowerup.com/vgabios/192320/sapphire-rx560-4096-170419) and download the VBIOS linked at the bottom:
|
||||
@@ -30,26 +29,14 @@ To find a suitable VBIOS, we'll be using [TechPowerUps Video BIOS Collection](ht
|
||||
```
|
||||
Sapphire.RX560.4096.170419.rom
|
||||
```
|
||||
|
||||
Now we have 1 small issue, our VBIOS must be padded to 65536 bytes(64KB). And our VBIOS is 262KB... *Shit*
|
||||
|
||||
[Insert magic software to shrink our VBIOS]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 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
|
||||
@@ -59,8 +46,8 @@ To find the PCI path of a GPU is fairly simple, best way to find it is running W
|
||||
|
||||

|
||||
|
||||
|
||||
The second "ACPI" is what we care about:
|
||||
|
||||
```
|
||||
ACPI(_SB_)#ACPI(PC02)#ACPI(BR2A)#ACPI(PEGP)#PCI(0000)#PCI(0000)
|
||||
```
|
||||
@@ -70,6 +57,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
|
||||
@@ -80,6 +68,7 @@ To start grab our [SSDT-VBIOS]() and open it up. Here there's a couple things to
|
||||
External (_SB_.PCI0, DeviceObj)
|
||||
External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
|
||||
```
|
||||
|
||||
For our example, we'll change all mentions of :
|
||||
|
||||
* `PCI0` with `PC02`
|
||||
@@ -92,14 +81,13 @@ Now that the ACPI pathing is correct, we can finally inject our VBIOS!!
|
||||
So the part we want to change:
|
||||
|
||||
**VBIOS**:
|
||||
|
||||
```
|
||||
"ATY,bin_image",
|
||||
"ATY,bin_image",
|
||||
Buffer (0x00010000)
|
||||
{
|
||||
// Put your VBIOS here
|
||||
},
|
||||
```
|
||||
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user