OpenCorePkg/Docs/AcpiSamples/SSDT-PLUG.dsl
MacOS86-it 613d0bdb88
Docs: Another check in SSDT-PLUG to fix 'Cannot override' bug (#35)
This one should fix issue #814 once and for all. The issue was caused by the SSDT that was adding _DSM Method to a Package (forbidden by ACPI Specification) defined on the DSDT (\_SB.PR00). The new if-condition checks if the object is a Processor. By doing this way, if it finds a Package it doesn't add the _DSM Method.
2020-04-13 05:06:23 +03:00

122 lines
3.3 KiB
Plaintext

/*
* XCPM power management compatibility table.
*
* Please note that this table is only a sample and may need to be
* adapted to fit your board's ACPI stack. For instance, both scope
* and device name may vary (e.g. _SB_.PR00 instead of _PR_.CPU0).
*
* While the table contains several examples of CPU paths, you should
* remove all the ones irrelevant for your board.
*/
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
External (_SB_.CPU0, ProcessorObj)
External (_PR_.CPU0, ProcessorObj)
External (_PR_.C000, ProcessorObj)
External (_PR_.P000, ProcessorObj)
External (_SB_.PR00, ProcessorObj)
External (_PR_.PR00, ProcessorObj)
External (_SB_.SCK0.CP00, ProcessorObj)
External (_SB_.SCK0.PR00, ProcessorObj)
Method (PMPM, 4, NotSerialized) {
If (LEqual (Arg2, Zero)) {
Return (Buffer (One) { 0x03 })
}
Return (Package (0x02)
{
"plugin-type",
One
})
}
If (CondRefOf (\_SB.CPU0)) {
If ((ObjectType (\_SB.CPU0) == 0x0C)) {
Scope (\_SB.CPU0) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_PR.CPU0)) {
If ((ObjectType (\_PR.CPU0) == 0x0C)) {
Scope (\_PR.CPU0) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_SB.PR00)) {
If ((ObjectType (\_SB.PR00) == 0x0C)) {
Scope (\_SB.PR00) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_PR.C000)) {
If ((ObjectType (\_PR.C000) == 0x0C)) {
Scope (\_PR.C000) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_PR.P000)) {
If ((ObjectType (\_PR.P000) == 0x0C)) {
Scope (\_PR.P000) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_PR.PR00)) {
If ((ObjectType (\_PR.PR00) == 0x0C)) {
Scope (\_PR.PR00) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_SB.SCK0.CP00)) {
If ((ObjectType (\_SB.SCK0.CP00) == 0x0C)) {
Scope (\_SB.SCK0.CP00) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
If (CondRefOf (\_SB.SCK0.PR00)) {
If ((ObjectType (\_SB.SCK0.PR00) == 0x0C)) {
Scope (\_SB.SCK0.PR00) {
Method (_DSM, 4, NotSerialized)
{
Return (PMPM (Arg0, Arg1, Arg2, Arg3))
}
}
}
}
}