mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Rewrite prebuilt SSDT page
Should help new users navigate the site better Also added X99 and X299 info
This commit is contained in:
110
Universal/awac-methods/manual-hedt.md
Normal file
110
Universal/awac-methods/manual-hedt.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# Fixing System Clocks on HEDT: Manual
|
||||
|
||||
|
||||
* [Finding the ACPI path](#finding-the-acpi-path)
|
||||
* [Edits to the sample SSDT](#edits-to-the-sample-ssdt)
|
||||
* [Compiling the SSDT](#compiling-the-ssdt)
|
||||
* [Wrapping up](#wrapping-up)
|
||||
|
||||
## Seeing if you need SSDT-RTC0-RANGE
|
||||
|
||||
To start, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||
|
||||
Now search for `PNP0B00` and look at the `_CRS` entry within it:
|
||||
|
||||

|
||||
|
||||
And from the above example, we see we have 2 banks of RTC memory:
|
||||
|
||||
* Bank 1: starts at 0x70 and is length 0x2
|
||||
* Bank 2: starts at 0x74 and is length 0x4
|
||||
|
||||
Now the problem is that the OEM forgot to mat sections 0x72 and 0x73. Because of this, macOS may halt while booting(prominently in Big Sur)
|
||||
|
||||
And finally, verify if it has an _STA method as well. This will be used shortly
|
||||
|
||||
|
||||
## Finding the ACPI path
|
||||
|
||||
Finding the ACPI pathing is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||
|
||||
To start, search for the following:
|
||||
|
||||
* Finding the RTC name:
|
||||
* Search `PNP0B00`
|
||||
* Finding the LowPinCount path:
|
||||
* Search `Name (_ADR, 0x001F0000)`
|
||||
* Finding the PCI path:
|
||||
* Search `PNP0A08` (If multiple show up, use the first one)
|
||||
|
||||
You should get something like the following show up:
|
||||
|
||||
RTC Pathing | LPC Pathing | PCI Pathing
|
||||
:----------:|:-------------------------:|:-------------------------:
|
||||
 |  | 
|
||||
|
||||
From the above, we can see we have `RTC`, `LPC0` and `PCI0`. Now we can head to the next stage
|
||||
|
||||
## Edits to the sample SSDT
|
||||
|
||||
Now that we have our ACPI path, lets grab our SSDT and get to work:
|
||||
|
||||
* [SSDT-RTC0-RANGE.dsl](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0-RANGE.dsl)
|
||||
|
||||
By default, this uses `PC00.LPC0.RTC` for the pathing. you'll want to rename accordingly.
|
||||
|
||||
Following the example from above, we'll be renaming it to `PCI0.LPC0.RTC`:
|
||||
|
||||
**Before**:
|
||||
|
||||
```
|
||||
External (_SB_.PC00.LPC0, DeviceObj) <- Rename this
|
||||
|
||||
External (_SB_.PC00.LPC0.RTC_, DeviceObj) <- Rename this
|
||||
|
||||
Scope (_SB.PC00.LPC0) <- Rename this
|
||||
```
|
||||
|
||||

|
||||
|
||||
Following the example pathing we found, the SSDT should look something like this:
|
||||
|
||||
**After**:
|
||||
|
||||
```
|
||||
External (_SB_.PCI0.LPC0, DeviceObj) <- Renamed
|
||||
|
||||
Scope (_SB.PCI0.LPC0.RTC) <- Renamed
|
||||
|
||||
Scope (_SB.PCI0.LPC0) <- Renamed
|
||||
|
||||
|
||||
/* <- Remove if your RTC device didn't have an _STA
|
||||
Scope (RTC)
|
||||
{
|
||||
Method (_STA, 0, NotSerialized) // _STA: Status
|
||||
{
|
||||
If (_OSI ("Darwin"))
|
||||
{
|
||||
Return (Zero)
|
||||
}
|
||||
Else
|
||||
{
|
||||
Return (0x0F)
|
||||
}
|
||||
}
|
||||
}
|
||||
*/ <- Remove if your RTC device didn't have an _STA
|
||||
```
|
||||
|
||||

|
||||
|
||||
### Compiling the SSDT
|
||||
|
||||
With the SSDT done, you're now [ready to compile the SSDT!](/Manual/compile.md)
|
||||
|
||||
## Wrapping up
|
||||
|
||||
Once you're done making your SSDT, either head to the next page to finish the rest of the SSDTs or head here if you're ready to wrap up:
|
||||
|
||||
* [**Cleanup**](/cleanup.md)
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
## Determining which SSDT you need
|
||||
|
||||
* **Note**: X99 and X299 see [here](../awac-methods/manual-hedt.md)
|
||||
|
||||
Finding which SSDT you need is quite easy actually, first open your decompiled DSDT you got from [Dumping the DSDT](/Manual/dump.md) and [Decompiling and Compiling](/Manual/compile.md) with either maciASL(if in macOS) or any other text editor if in Windows or Linux(VSCode has an [ACPI extension](https://marketplace.visualstudio.com/items?itemName=Thog.vscode-asl) that can also help).
|
||||
|
||||
Next search for `ACPI000E`. You should get something similar:
|
||||
@@ -32,25 +34,6 @@ Now it's as simple as grabbing [SSDT-AWAC.dsl](https://github.com/acidanthera/Op
|
||||
|
||||
* [SSDT-AWAC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml)
|
||||
|
||||
### _INI Edge Cases
|
||||
|
||||
Mainly seen on X299 refresh boards, there's already a `Scope (_SB) { Method (_INI...` in your DSDT. This means our SSDT-AWAC will conflict with the one found in our DSDT. For these situations, you'll want to remove `Method (_INI, 0, NotSerialized) {}` from the SSDT. You'll be left this this in the end:
|
||||
|
||||
```
|
||||
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AWAC", 0x00000000)
|
||||
{
|
||||
External (STAS, IntObj)
|
||||
|
||||
Scope (_SB)
|
||||
{
|
||||
If (_OSI ("Darwin"))
|
||||
{
|
||||
STAS = One
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## RTC0 Method
|
||||
|
||||
This method is for those who either don't have a `PNP0B00` device to re-enable or have no easy way(via STAS variable).
|
||||
|
||||
@@ -3,10 +3,15 @@
|
||||
By far the easiest method, all you need to do is download the following file:
|
||||
|
||||
* [SSDT-AWAC.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-AWAC.aml)
|
||||
* For most users
|
||||
* [SSDT-RTC0-RANGE-HEDT](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-RTC0-RANGE-HEDT.aml)
|
||||
* For Intel's X99 and X299 platforms
|
||||
|
||||
Main things to note with this method:
|
||||
|
||||
* Assumes you both have an AWAC clock and it can be easily turned off with the RTC replacing it, **this may not always work**
|
||||
* This only applies to SSDT-AWAC
|
||||
* SSDT-RTC0-RANGE instead relies on known RTC names, and can only handle so many edge cases
|
||||
* Doesn't really teach you anything
|
||||
* For most, this doesn't matter. But to some knowing what makes your hackintosh tick is part of the journey
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Fixing System Clocks (SSDT-AWAC/RTC0)
|
||||
|
||||
* **Reminder**: Does not support HEDT(ie. X99 and X299)
|
||||
|
||||
The second involves using SSDTTime which automates most of the process. See here on how to use it: [SSDTs: Easy Way](/ssdt-methods/ssdt-easy.md)
|
||||
|
||||
To get the SSDT-PMC, run the following:
|
||||
|
||||
Reference in New Issue
Block a user