]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DynamicTablesPkg/Include/Library/AmlLib/AmlLib.h
DynamicTablesPkg: AML Code generation to add _CPC entries
[mirror_edk2.git] / DynamicTablesPkg / Include / Library / AmlLib / AmlLib.h
index 39968660f25f410fa7be5da848fce3584931189f..0d8446d782564fbbb0d3c785aa420f11e7dd1261 100644 (file)
@@ -36,6 +36,7 @@
   @}\r
 */\r
 \r
+#include <AmlCpcInfo.h>\r
 #include <IndustryStandard/Acpi.h>\r
 \r
 #ifndef AML_HANDLE\r
@@ -1336,6 +1337,59 @@ AmlAddNameIntegerPackage (
   IN AML_OBJECT_NODE_HANDLE  PackageNode\r
   );\r
 \r
+/** Create a _CPC node.\r
+\r
+  Creates and optionally adds the following node\r
+   Name(_CPC, Package()\r
+   {\r
+    NumEntries,                              // Integer\r
+    Revision,                                // Integer\r
+    HighestPerformance,                      // Integer or Buffer (Resource Descriptor)\r
+    NominalPerformance,                      // Integer or Buffer (Resource Descriptor)\r
+    LowestNonlinearPerformance,              // Integer or Buffer (Resource Descriptor)\r
+    LowestPerformance,                       // Integer or Buffer (Resource Descriptor)\r
+    GuaranteedPerformanceRegister,           // Buffer (Resource Descriptor)\r
+    DesiredPerformanceRegister ,             // Buffer (Resource Descriptor)\r
+    MinimumPerformanceRegister ,             // Buffer (Resource Descriptor)\r
+    MaximumPerformanceRegister ,             // Buffer (Resource Descriptor)\r
+    PerformanceReductionToleranceRegister,   // Buffer (Resource Descriptor)\r
+    TimeWindowRegister,                      // Buffer (Resource Descriptor)\r
+    CounterWraparoundTime,                   // Integer or Buffer (Resource Descriptor)\r
+    ReferencePerformanceCounterRegister,     // Buffer (Resource Descriptor)\r
+    DeliveredPerformanceCounterRegister,     // Buffer (Resource Descriptor)\r
+    PerformanceLimitedRegister,              // Buffer (Resource Descriptor)\r
+    CPPCEnableRegister                       // Buffer (Resource Descriptor)\r
+    AutonomousSelectionEnable,               // Integer or Buffer (Resource Descriptor)\r
+    AutonomousActivityWindowRegister,        // Buffer (Resource Descriptor)\r
+    EnergyPerformancePreferenceRegister,     // Buffer (Resource Descriptor)\r
+    ReferencePerformance                     // Integer or Buffer (Resource Descriptor)\r
+    LowestFrequency,                         // Integer or Buffer (Resource Descriptor)\r
+    NominalFrequency                         // Integer or Buffer (Resource Descriptor)\r
+  })\r
+\r
+  If resource buffer is NULL then integer will be used.\r
+\r
+  Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control)\r
+\r
+  @ingroup CodeGenApis\r
+\r
+  @param [in]  CpcInfo               CpcInfo object\r
+  @param [in]  ParentNode            If provided, set ParentNode as the parent\r
+                                     of the node created.\r
+  @param [out] NewCpcNode            If success and provided, contains the created node.\r
+\r
+  @retval EFI_SUCCESS             The function completed successfully.\r
+  @retval EFI_INVALID_PARAMETER   Invalid parameter.\r
+  @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+AmlCreateCpcNode (\r
+  IN  AML_CPC_INFO            *CpcInfo,\r
+  IN  AML_NODE_HANDLE         ParentNode   OPTIONAL,\r
+  OUT AML_OBJECT_NODE_HANDLE  *NewCpcNode   OPTIONAL\r
+  );\r
+\r
 // DEPRECATED APIS\r
 #ifndef DISABLE_NEW_DEPRECATED_INTERFACES\r
 \r