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