/** @file | |
Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef AML_CPC_INFO_H_ | |
#define AML_CPC_INFO_H_ | |
#include <IndustryStandard/Acpi.h> | |
#pragma pack(1) | |
/** A structure that describes the Cpc information. | |
Continuous Performance Control is described in DSDT/SSDT and associated | |
to cpus/clusters in the cpu topology. | |
Unsupported Optional registers should be encoded with NULL resource | |
Register {(SystemMemory, 0, 0, 0, 0)} | |
For values that support Integer or Buffer, integer will be used | |
if buffer is NULL resource. | |
If resource is not NULL then Integer must be 0 | |
Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control) | |
**/ | |
typedef struct AmlCpcInfo { | |
/// The revision number of the _CPC package format. | |
UINT32 Revision; | |
/// Indicates the highest level of performance the processor | |
/// is theoretically capable of achieving. | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE HighestPerformanceBuffer; | |
UINT32 HighestPerformanceInteger; | |
/// Indicates the highest sustained performance level of the processor. | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalPerformanceBuffer; | |
UINT32 NominalPerformanceInteger; | |
/// Indicates the lowest performance level of the processor with non-linear power savings. | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestNonlinearPerformanceBuffer; | |
UINT32 LowestNonlinearPerformanceInteger; | |
/// Indicates the lowest performance level of the processor.. | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestPerformanceBuffer; | |
UINT32 LowestPerformanceInteger; | |
/// Guaranteed Performance Register Buffer. | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE GuaranteedPerformanceRegister; | |
/// Desired Performance Register Buffer. | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DesiredPerformanceRegister; | |
/// Minimum Performance Register Buffer. | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MinimumPerformanceRegister; | |
/// Maximum Performance Register Buffer. | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MaximumPerformanceRegister; | |
/// Performance Reduction Tolerance Register. | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceReductionToleranceRegister; | |
/// Time Window Register. | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE TimeWindowRegister; | |
/// Counter Wraparound Time | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CounterWraparoundTimeBuffer; | |
UINT32 CounterWraparoundTimeInteger; | |
/// Reference Performance Counter Register | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceCounterRegister; | |
/// Delivered Performance Counter Register | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DeliveredPerformanceCounterRegister; | |
/// Performance Limited Register | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceLimitedRegister; | |
/// CPPC EnableRegister | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CPPCEnableRegister; | |
/// Autonomous Selection Enable | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousSelectionEnableBuffer; | |
UINT32 AutonomousSelectionEnableInteger; | |
/// AutonomousActivity-WindowRegister | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousActivityWindowRegister; | |
/// EnergyPerformance-PreferenceRegister | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EnergyPerformancePreferenceRegister; | |
/// Reference Performance | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceBuffer; | |
UINT32 ReferencePerformanceInteger; | |
/// Lowest Frequency | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestFrequencyBuffer; | |
UINT32 LowestFrequencyInteger; | |
/// Nominal Frequency | |
/// Optional | |
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalFrequencyBuffer; | |
UINT32 NominalFrequencyInteger; | |
} AML_CPC_INFO; | |
#pragma pack() | |
#endif //AML_CPC_INFO_H_ |