AmlCpcInfo.h 4.3 KB

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