Power Management

Per abilitare il Power Management è necessario un ssdt, questo può variare in base all'hardware a disposizione dell'utente. Potete scaricare quello di esempio da QUI.

  • Andrà, in caso, modificato come segue, compilato e salvato in .aml.

  • Per questo compito scaricate l'ultima versione di MaciASL QUI.

  • Il file SSDT compilato dovrà essere collocato in EFI/OC/ACPI, dichiarato ed abilitato nel config.

NOTA:Se state usando un ssdt generato con script di Piker R.Alpha potete comunque continuare ad usarlo. Il nome del ssdt è relativo, quindi potete modificarlo ma nel caso dovrà ovviamente definito a modo sul config.

Coffelake e successivi

/*
 * XCPM power management compatibility table.
 */
DefinitionBlock ("", "SSDT", 2, "CpuRef", "CpuPlug", 0x00003000)
{
    External (_SB_.PR00, ProcessorObj)    // (from opcode)

    Scope (\_SB.PR00)
    {
        Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03                                           
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00                                           
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x02)
                {
                    "plugin-type", 
                    One
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
}

Serie Xeon, esempio per Skylake-R

/*
 * XCPM power management compatibility table.
 */
DefinitionBlock ("", "SSDT", 2, "CpuRef", "CpuPlug", 0x00003000)
{
    External (_SB_.SCK0.CP00, DeviceObj)    // (from opcode)

    Scope (\_SB.SCK0.CP00)
    {
        Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03                                           
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00                                           
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x02)
                {
                    "plugin-type", 
                    One
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
}

Potete trovare tali ssdt già compilati e suddivisi per serie QUI.

Last updated