diff options
Diffstat (limited to 'ReferenceCode/AcpiTables/Cppc/AcpiTables/Cpc.asl')
-rw-r--r-- | ReferenceCode/AcpiTables/Cppc/AcpiTables/Cpc.asl | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/ReferenceCode/AcpiTables/Cppc/AcpiTables/Cpc.asl b/ReferenceCode/AcpiTables/Cppc/AcpiTables/Cpc.asl new file mode 100644 index 0000000..2099515 --- /dev/null +++ b/ReferenceCode/AcpiTables/Cppc/AcpiTables/Cpc.asl @@ -0,0 +1,298 @@ +/*++ + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +--*/ + +/*++ + +Copyright (c) 1999 - 2012 Intel Corporation. All rights reserved +This software and associated documentation (if any) is furnished +under a license and may only be used or copied in accordance +with the terms of the license. Except as permitted by such +license, no part of this software or documentation may be +reproduced, stored in a retrieval system, or transmitted in any +form or by any means without the express written consent of +Intel Corporation. + +Module Name: + + Cpc.asl + +Abstract: + + Intel ACPI Reference Code for ACPI 5.0 Collaborative Processor Performance Control (CPPC) + +--*/ + +DefinitionBlock ( + "Cpc.aml", + "SSDT", + 1, + "Cpc_Tabl", + "Cpc_Tabl", + 0x1000 ) +{ + +External(\_PR.CPU0, ProcessorObj) +External(\_PR.CPU1, ProcessorObj) +External(\_PR.CPU2, ProcessorObj) +External(\_PR.CPU3, ProcessorObj) +External(\_PR.CPU4, ProcessorObj) +External(\_PR.CPU5, ProcessorObj) +External(\_PR.CPU6, ProcessorObj) +External(\_PR.CPU7, ProcessorObj) + +// _CPC (Continuous Performance Control) +// _CPC is a per-processor ACPI object that declares an interface for OSPM to +// transition the processor into a performance state based on a continuous range +// of allowable values. Each CPPC register is described in a Generic Register +// Descriptor format and maps to an unique PCC shared memory +// location. For a complete description of _CPC object, refer to ACPI 5.0 +// specification, section 8.4.5.1. +// Arguments: (0) +// None +// Return Value: +// A Package of elements in the following format +// +// Package +// { +// NumEntries, // Integer +// Revision, // Integer +// HighestPerformance, // Generic Register Descriptor +// NominalPerformance, // Generic Register Descriptor +// LowestNonlinearPerformance, // Generic Register Descriptor +// LowestPerformance, // Generic Register Descriptor +// GuaranteedPerformanceRegister, // Generic Register Descriptor +// DesiredPerformanceRegister, // Generic Register Descriptor +// MinimumPerformanceRegister, // Generic Register Descriptor +// MaximumPerformanceRegister, // Generic Register Descriptor +// PerformanceReductionToleranceRegister,// Generic Register Descriptor +// TimeWindowRegister, // Generic Register Descriptor +// CounterWraparoundTime, // Generic Register Descriptor +// NominalCounterRegister, // Generic Register Descriptor +// DeliveredCounterRegister, // Generic Register Descriptor +// PerformanceLimitedRegister, // Generic Register Descriptor +// EnableRegister // Generic Register Descriptor +// } + +Scope(\_PR.CPU0) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x0000, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0004, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0008, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x000C, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0010, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0014, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0018, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x001C, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0020, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0024, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0028, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x003C, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0040, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU0) + +Scope(\_PR.CPU1) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x0064, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0068, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x006C, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0070, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0074, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0078, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x007C, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0080, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0084, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0088, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x008C, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00A0, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00A4, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU1) + +Scope(\_PR.CPU2) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x00C8, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x00CC, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x00D0, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x00D4, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x00D8, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00DC, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00E0, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00E4, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00E8, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00EC, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x00F0, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0104, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0108, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU2) + +Scope(\_PR.CPU3) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x012C, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0130, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0134, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0138, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x013C, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0140, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0144, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0148, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x014C, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0150, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0154, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0168, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x016C, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU3) + +Scope(\_PR.CPU4) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x0190, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0194, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0198, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x019C, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x01A0, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01A4, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01A8, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01AC, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01B0, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01B4, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01B8, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01CC, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x01D0, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU4) + +Scope(\_PR.CPU5) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x01F4, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x01F8, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x01FC, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0200, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0204, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0208, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x020C, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0210, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0214, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0218, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x021C, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0230, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0234, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU5) + +Scope(\_PR.CPU6) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x0258, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x025C, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0260, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0264, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x0268, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x026C, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0270, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0274, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0278, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x027C, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0280, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0294, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x0298, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU6) + +Scope(\_PR.CPU7) +{ + Name(_CPC, Package() + { + 17, // Number of entries + 1, // Revision + // + // Describe processor capabilities + // + ResourceTemplate() {Register(PCC, 32, 0, 0x02BC, 0)}, // HighestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x02C0, 0)}, // NominalPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x02C4, 0)}, // LowestNonlinearPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x02C8, 0)}, // LowestPerformance + ResourceTemplate() {Register(PCC, 32, 0, 0x02CC, 0)}, // GuaranteedPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02D0, 0)}, // DesiredPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02D4, 0)}, // MinimumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02D8, 0)}, // MaximumPerformanceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02DC, 0)}, // PerformanceReductionToleranceRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02E0, 0)}, // TimeWindowRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02E4, 0)}, // CounterWraparoundTime + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE7, 4)}, // NominalCounterRegister + ResourceTemplate() {Register(FFixedHW, 64, 0, 0xE8, 4)}, // DeliveredCounterRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02F8, 0)}, // PerformanceLimitedRegister + ResourceTemplate() {Register(PCC, 32, 0, 0x02FC, 0)} // EnableRegister + }) +}// end Scope(\_PR.CPU7) + +}// end of definition block |