Rewrite prebuilt SSDT page

Should help new users navigate the site better

Also added X99 and X299 info
This commit is contained in:
Mykola Grymalyuk
2020-10-16 15:07:15 -06:00
parent 0a579cb98a
commit 614c097101
30 changed files with 1708 additions and 131 deletions

View File

@@ -0,0 +1,815 @@
/* Purpose of this SSDT is to:
*
* - Find the RTC device and see if there's an _STA
* - If yes, just create a new RTC device as we'll assume AWAC is present
* and enabled by default. Thankfully AppleSMCRTC will unload with AWAC
* allowing AppleRTC to be the only kext loaded
* - If no, disable the RTC device and create a new one to avoid conflict
* with multiple RTC devices enabled
*
* Note this is only to be used with X99 and X299, X79 only support 1 bank
* of RTC memory and so this SSDT can actually break a system
*
* Also due to ACPI namespace issues, each RTC device has a unique name,
* thankfully AppleRTC matches based off of _HID and does not care about
* the RTC's name
*/
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "RtcRange", 0x00001000)
{
// X99 Definitions
External (_SB_.PCI0, DeviceObj)
External (_SB_.PCI0.LPC0.RTC, DeviceObj)
External (_SB_.PCI0.LPC0.RTC._STA, MethodObj)
External (_SB_.PCI0.LPC0.RTC0, DeviceObj)
External (_SB_.PCI0.LPC0.RTC0._STA, MethodObj)
External (_SB_.PCI0.LPC.RTC, DeviceObj)
External (_SB_.PCI0.LPC.RTC._STA, MethodObj)
External (_SB_.PCI0.LPC.RTC0, DeviceObj)
External (_SB_.PCI0.LPC.RTC0._STA, MethodObj)
External (_SB_.PCI0.LPCB.RTC, DeviceObj)
External (_SB_.PCI0.LPCB.RTC._STA, MethodObj)
External (_SB_.PCI0.LPCB.RTC0, DeviceObj)
External (_SB_.PCI0.LPCB.RTC0._STA, MethodObj)
External (_SB_.PCI0.SBRG.RTC, DeviceObj)
External (_SB_.PCI0.SBRG.RTC._STA, MethodObj)
External (_SB_.PCI0.SBRG.RTC0, DeviceObj)
External (_SB_.PCI0.SBRG.RTC0._STA, MethodObj)
// X299 Definitions
External (_SB_.PC00, DeviceObj)
External (_SB_.PC00.LPC0.RTC, DeviceObj)
External (_SB_.PC00.LPC0.RTC._STA, MethodObj)
External (_SB_.PC00.LPC0.RTC0, DeviceObj)
External (_SB_.PC00.LPC0.RTC0._STA, MethodObj)
External (_SB_.PC00.LPC.RTC, DeviceObj)
External (_SB_.PC00.LPC.RTC._STA, MethodObj)
External (_SB_.PC00.LPC.RTC0, DeviceObj)
External (_SB_.PC00.LPC.RTC0._STA, MethodObj)
External (_SB_.PC00.LPCB.RTC, DeviceObj)
External (_SB_.PC00.LPCB.RTC._STA, MethodObj)
External (_SB_.PC00.LPCB.RTC0, DeviceObj)
External (_SB_.PC00.LPCB.RTC0._STA, MethodObj)
// LPC0 Naming
// X99 - RTC_ Case
If (CondRefOf (\_SB.PCI0.LPC0.RTC))
{
// Create RTC1 device
Device (\_SB.PCI0.LPC0.RTC1)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPC0.RTC._STA))
{
Scope (\_SB.PCI0.LPC0.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X99 - RTC0 Case
If (CondRefOf (\_SB.PCI0.LPC0.RTC0))
{
// Create RTC2 device
Device (\_SB.PCI0.LPC0.RTC2)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPC0.RTC0._STA))
{
Scope (\_SB.PCI0.LPC0.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// LPC Naming
If (CondRefOf (\_SB.PCI0.LPC.RTC))
{
// Create RTC1 device
Device (\_SB.PCI0.LPC.RTC1)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPC.RTC._STA))
{
Scope (\_SB.PCI0.LPC.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X99 - RTC0 Case
If (CondRefOf (\_SB.PCI0.LPC.RTC0))
{
// Create RTC2 device
Device (\_SB.PCI0.LPC.RTC2)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPC.RTC0._STA))
{
Scope (\_SB.PCI0.LPC.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// LPCB Naming
If (CondRefOf (\_SB.PCI0.LPCB.RTC))
{
// Create RTC1 device
Device (\_SB.PCI0.LPCB.RTC1)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPCB.RTC._STA))
{
Scope (\_SB.PCI0.LPCB.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X99 - RTC0 Case
If (CondRefOf (\_SB.PCI0.LPCB.RTC0))
{
// Create RTC2 device
Device (\_SB.PCI0.LPCB.RTC2)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.LPCB.RTC0._STA))
{
Scope (\_SB.PCI0.LPCB.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// SBRG Naming
If (CondRefOf (\_SB.PCI0.SBRG.RTC))
{
// Create RTC1 device
Device (\_SB.PCI0.SBRG.RTC1)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.SBRG.RTC._STA))
{
Scope (\_SB.PCI0.SBRG.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X99 - RTC0 Case
If (CondRefOf (\_SB.PCI0.SBRG.RTC0))
{
// Create RTC2 device
Device (\_SB.PCI0.SBRG.RTC2)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PCI0.SBRG.RTC0._STA))
{
Scope (\_SB.PCI0.SBRG.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// LPC0 Naming
// X299 - RTC_ Case
If (CondRefOf (\_SB.PC00.LPC0.RTC))
{
// Create RTC3 device
Device (\_SB.PC00.LPC0.RTC3)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPC0.RTC._STA))
{
Scope (\_SB.PC00.LPC0.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X299 - RTC0 Case
If (CondRefOf (\_SB.PC00.LPC0.RTC0))
{
// Create RTC4 device
Device (\_SB.PC00.LPC0.RTC4)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPC0.RTC0._STA))
{
Scope (\_SB.PC00.LPC0.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// LPC Naming
// X299 - RTC_ Case
If (CondRefOf (\_SB.PC00.LPC.RTC))
{
// Create RTC3 device
Device (\_SB.PC00.LPC.RTC3)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPC.RTC._STA))
{
Scope (\_SB.PC00.LPC.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X299 - RTC0 Case
If (CondRefOf (\_SB.PC00.LPC.RTC0))
{
// Create RTC4 device
Device (\_SB.PC00.LPC.RTC4)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPC.RTC0._STA))
{
Scope (\_SB.PC00.LPC.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// LPCB Naming
// X299 - RTC_ Case
If (CondRefOf (\_SB.PC00.LPCB.RTC))
{
// Create RTC3 device
Device (\_SB.PC00.LPCB.RTC3)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPCB.RTC._STA))
{
Scope (\_SB.PC00.LPCB.RTC)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
// X299 - RTC0 Case
If (CondRefOf (\_SB.PC00.LPCB.RTC0))
{
// Create RTC4 device
Device (\_SB.PC00.LPCB.RTC4)
{
Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0070, // Range Minimum 1
0x0070, // Range Maximum 1
0x01, // Alignment 1
0x04, // Length 1 (Expanded to include 0x72 and 0x73)
)
IO (Decode16,
0x0074, // Range Minimum 2
0x0074, // Range Maximum 2
0x01, // Alignment 2
0x04, // Length 2
)
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
}
If (!CondRefOf (\_SB.PC00.LPCB.RTC0._STA))
{
Scope (\_SB.PC00.LPCB.RTC0)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
}
}
}

View File

@@ -0,0 +1,19 @@
/*
* Ensures unsed uncore bridges are disabled, otherwise X79 and X99
* will kernel panic in Big Sur with IOPCIFamily.
* SSDT Taken from OpenCorePkg repo
*/
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "UNC", 0x00000000)
{
External (_SB.UNC0, DeviceObj)
External (PRBM, IntObj)
Scope (_SB.UNC0)
{
Method (_INI, 0, NotSerialized)
{
PRBM = 0
}
}
}