123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /** @file
- CPU T-state control methods
- Copyright (c) 2013-2015 Intel Corporation.
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- DefinitionBlock (
- "CPU0TST.aml",
- "SSDT",
- 0x01,
- "SsgPmm",
- "Cpu0Tst",
- 0x0013
- )
- {
- External (PDC0, IntObj)
- External (CFGD, FieldUnitObj)
- External(\_PR.CPU0, DeviceObj)
- External(_PSS)
- Scope(\_PR.CPU0)
- {
- Method(_TPC,0)
- {
- Return(ZERO) // Return All States Available.
- }
- Name(TPTC, ResourceTemplate()
- {
- Memory32Fixed(ReadOnly, 0, 0, FIX1) // IO APIC
- })
- //
- // If OSPM is capable of direct access to on demand throttling MSR,
- // we use MSR method;otherwise we use IO method.
- //
- //
- // PDCx[2] = Indicates whether OSPM is capable of direct access to
- // on demand throttling MSR.
- //
- Method(_PTC, 0)
- {
- If(And(PDC0, 0x0004))
- {
- Return(Package() // MSR Method
- {
- ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
- ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
- }
- )
- }
- Return(Package() // IO Method
- {
- //
- // PM IO base ("PMBALVL0" will be updated at runtime)
- //
- ResourceTemplate(){Register(SystemIO, 4, 1, 0x304C564C41424D50)},
- ResourceTemplate(){Register(SystemIO, 4, 1, 0x304C564C41424D50)}
- }
- )
- }
- //
- // _TSS returned package for IO Method
- //
- Name(TSSI, Package()
- {
- Package(){100, 1000, 0, 0x00, 0}
- }
- )
- //
- // _TSS returned package for MSR Method
- //
- Name(TSSM, Package()
- {
- Package(){100, 1000, 0, 0x00, 0}
- }
- )
- Method(_TSS, 0)
- {
- //
- // If OSPM is capable of direct access to on demand throttling MSR,
- // we report TSSM;otherwise report TSSI.
- //
- If(And(PDC0, 0x0004))
- {
- Return(TSSM)
- }
- Return(TSSI)
- }
- Method(_TSD, 0)
- {
- //
- // If CMP is suppored, we report the dependency with two processors
- //
- If(LAnd(And(CFGD, 0x1000000), LNot(And(PDC0, 4))))
- {
- Return(Package()
- {
- Package()
- {
- 5, // # entries.
- 0, // Revision.
- 0, // Domain #.
- 0xFD, // Coord Type- SW_ANY
- 2 // # processors.
- }
- }
- )
- }
- //
- // Otherwise, we report the dependency with one processor
- //
- Return(Package()
- {
- Package()
- {
- 5, // # entries.
- 0, // Revision.
- 0, // Domain #.
- 0xFC, // Coord Type- SW_ALL
- 1 // # processors.
- }
- }
- )
- }
- }
- }
|