1 | /** @file
|
---|
2 |
|
---|
3 | Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.<BR>
|
---|
4 |
|
---|
5 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
6 | **/
|
---|
7 |
|
---|
8 | #ifndef AML_CPC_INFO_H_
|
---|
9 | #define AML_CPC_INFO_H_
|
---|
10 |
|
---|
11 | #include <IndustryStandard/Acpi.h>
|
---|
12 |
|
---|
13 | #pragma pack(1)
|
---|
14 |
|
---|
15 | /** A structure that describes the Cpc information.
|
---|
16 |
|
---|
17 | Continuous Performance Control is described in DSDT/SSDT and associated
|
---|
18 | to cpus/clusters in the cpu topology.
|
---|
19 |
|
---|
20 | Unsupported Optional registers should be encoded with NULL resource
|
---|
21 | Register {(SystemMemory, 0, 0, 0, 0)}
|
---|
22 |
|
---|
23 | For values that support Integer or Buffer, integer will be used
|
---|
24 | if buffer is NULL resource.
|
---|
25 | If resource is not NULL then Integer must be 0
|
---|
26 |
|
---|
27 | Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control)
|
---|
28 |
|
---|
29 | **/
|
---|
30 |
|
---|
31 | typedef struct AmlCpcInfo {
|
---|
32 | /// The revision number of the _CPC package format.
|
---|
33 | UINT32 Revision;
|
---|
34 |
|
---|
35 | /// Indicates the highest level of performance the processor
|
---|
36 | /// is theoretically capable of achieving.
|
---|
37 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE HighestPerformanceBuffer;
|
---|
38 | UINT32 HighestPerformanceInteger;
|
---|
39 |
|
---|
40 | /// Indicates the highest sustained performance level of the processor.
|
---|
41 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalPerformanceBuffer;
|
---|
42 | UINT32 NominalPerformanceInteger;
|
---|
43 |
|
---|
44 | /// Indicates the lowest performance level of the processor with non-linear power savings.
|
---|
45 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestNonlinearPerformanceBuffer;
|
---|
46 | UINT32 LowestNonlinearPerformanceInteger;
|
---|
47 |
|
---|
48 | /// Indicates the lowest performance level of the processor..
|
---|
49 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestPerformanceBuffer;
|
---|
50 | UINT32 LowestPerformanceInteger;
|
---|
51 |
|
---|
52 | /// Guaranteed Performance Register Buffer.
|
---|
53 | /// Optional
|
---|
54 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE GuaranteedPerformanceRegister;
|
---|
55 |
|
---|
56 | /// Desired Performance Register Buffer.
|
---|
57 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DesiredPerformanceRegister;
|
---|
58 |
|
---|
59 | /// Minimum Performance Register Buffer.
|
---|
60 | /// Optional
|
---|
61 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MinimumPerformanceRegister;
|
---|
62 |
|
---|
63 | /// Maximum Performance Register Buffer.
|
---|
64 | /// Optional
|
---|
65 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MaximumPerformanceRegister;
|
---|
66 |
|
---|
67 | /// Performance Reduction Tolerance Register.
|
---|
68 | /// Optional
|
---|
69 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceReductionToleranceRegister;
|
---|
70 |
|
---|
71 | /// Time Window Register.
|
---|
72 | /// Optional
|
---|
73 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE TimeWindowRegister;
|
---|
74 |
|
---|
75 | /// Counter Wraparound Time
|
---|
76 | /// Optional
|
---|
77 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CounterWraparoundTimeBuffer;
|
---|
78 | UINT32 CounterWraparoundTimeInteger;
|
---|
79 |
|
---|
80 | /// Reference Performance Counter Register
|
---|
81 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceCounterRegister;
|
---|
82 |
|
---|
83 | /// Delivered Performance Counter Register
|
---|
84 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DeliveredPerformanceCounterRegister;
|
---|
85 |
|
---|
86 | /// Performance Limited Register
|
---|
87 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceLimitedRegister;
|
---|
88 |
|
---|
89 | /// CPPC EnableRegister
|
---|
90 | /// Optional
|
---|
91 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CPPCEnableRegister;
|
---|
92 |
|
---|
93 | /// Autonomous Selection Enable
|
---|
94 | /// Optional
|
---|
95 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousSelectionEnableBuffer;
|
---|
96 | UINT32 AutonomousSelectionEnableInteger;
|
---|
97 |
|
---|
98 | /// AutonomousActivity-WindowRegister
|
---|
99 | /// Optional
|
---|
100 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousActivityWindowRegister;
|
---|
101 |
|
---|
102 | /// EnergyPerformance-PreferenceRegister
|
---|
103 | /// Optional
|
---|
104 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EnergyPerformancePreferenceRegister;
|
---|
105 |
|
---|
106 | /// Reference Performance
|
---|
107 | /// Optional
|
---|
108 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceBuffer;
|
---|
109 | UINT32 ReferencePerformanceInteger;
|
---|
110 |
|
---|
111 | /// Lowest Frequency
|
---|
112 | /// Optional
|
---|
113 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestFrequencyBuffer;
|
---|
114 | UINT32 LowestFrequencyInteger;
|
---|
115 |
|
---|
116 | /// Nominal Frequency
|
---|
117 | /// Optional
|
---|
118 | EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalFrequencyBuffer;
|
---|
119 | UINT32 NominalFrequencyInteger;
|
---|
120 | } AML_CPC_INFO;
|
---|
121 |
|
---|
122 | #pragma pack()
|
---|
123 |
|
---|
124 | #endif //AML_CPC_INFO_H_
|
---|