DynamicTablesPkg: Add CM_ARM_CPC_INFO object
Introduce the CM_ARM_CPC_INFO CmObj in the ArmNameSpaceObjects. This allows to describe CPC information, as described in ACPI 6.4, s8.4.7.1 "_CPC (Continuous Performance Control)". Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> Reviewed-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
committed by
mergify[bot]
parent
953438e466
commit
09c90532e7
@ -34,23 +34,24 @@ STATIC CONST CM_OBJ_PARSER CmArmPowerManagementProfileInfoParser[] = {
|
||||
/** A parser for EArmObjGicCInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArmGicCInfoParser[] = {
|
||||
{ "CPUInterfaceNumber", 4, "0x%x", NULL },
|
||||
{ "AcpiProcessorUid", 4, "0x%x", NULL },
|
||||
{ "Flags", 4, "0x%x", NULL },
|
||||
{ "ParkingProtocolVersion", 4, "0x%x", NULL },
|
||||
{ "PerformanceInterruptGsiv", 4, "0x%x", NULL },
|
||||
{ "ParkedAddress", 8, "0x%llx", NULL },
|
||||
{ "PhysicalBaseAddress", 8, "0x%llx", NULL },
|
||||
{ "GICV", 8, "0x%llx", NULL },
|
||||
{ "GICH", 8, "0x%llx", NULL },
|
||||
{ "VGICMaintenanceInterrupt", 4, "0x%x", NULL },
|
||||
{ "GICRBaseAddress", 8, "0x%llx", NULL },
|
||||
{ "MPIDR", 8, "0x%llx", NULL },
|
||||
{ "ProcessorPowerEfficiencyClass", 1, "0x%x", NULL },
|
||||
{ "SpeOverflowInterrupt", 2, "0x%x", NULL },
|
||||
{ "ProximityDomain", 4, "0x%x", NULL },
|
||||
{ "ClockDomain", 4, "0x%x", NULL },
|
||||
{ "AffinityFlags", 4, "0x%x", NULL }
|
||||
{ "CPUInterfaceNumber", 4, "0x%x", NULL },
|
||||
{ "AcpiProcessorUid", 4, "0x%x", NULL },
|
||||
{ "Flags", 4, "0x%x", NULL },
|
||||
{ "ParkingProtocolVersion", 4, "0x%x", NULL },
|
||||
{ "PerformanceInterruptGsiv", 4, "0x%x", NULL },
|
||||
{ "ParkedAddress", 8, "0x%llx", NULL },
|
||||
{ "PhysicalBaseAddress", 8, "0x%llx", NULL },
|
||||
{ "GICV", 8, "0x%llx", NULL },
|
||||
{ "GICH", 8, "0x%llx", NULL },
|
||||
{ "VGICMaintenanceInterrupt", 4, "0x%x", NULL },
|
||||
{ "GICRBaseAddress", 8, "0x%llx", NULL },
|
||||
{ "MPIDR", 8, "0x%llx", NULL },
|
||||
{ "ProcessorPowerEfficiencyClass", 1, "0x%x", NULL },
|
||||
{ "SpeOverflowInterrupt", 2, "0x%x", NULL },
|
||||
{ "ProximityDomain", 4, "0x%x", NULL },
|
||||
{ "ClockDomain", 4, "0x%x", NULL },
|
||||
{ "AffinityFlags", 4, "0x%x", NULL },
|
||||
{ "CpcToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL }
|
||||
};
|
||||
|
||||
/** A parser for EArmObjGicDInfo.
|
||||
@ -423,6 +424,84 @@ STATIC CONST CM_OBJ_PARSER CmPciInterruptMapInfoParser[] = {
|
||||
ARRAY_SIZE (CmArmGenericInterruptParser) },
|
||||
};
|
||||
|
||||
/** A parser for EArmObjCpcInfo.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER CmArmCpcInfoParser[] = {
|
||||
{ "Revision", 4, "0x%lx", NULL },
|
||||
{ "HighestPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "HighestPerformanceInteger", 4, "0x%lx", NULL },
|
||||
{ "NominalPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "NominalPerformanceInteger", 4, "0x%lx", NULL },
|
||||
{ "LowestNonlinearPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "LowestNonlinearPerformanceInteger", 4, "0x%lx", NULL },
|
||||
{ "LowestPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "LowestPerformanceInteger", 4, "0x%lx", NULL },
|
||||
{ "GuaranteedPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "DesiredPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "MinimumPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "MaximumPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "PerformanceReductionToleranceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "TimeWindowRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "CounterWraparoundTimeBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "CounterWraparoundTimeInteger", 4, "0x%lx", NULL },
|
||||
{ "ReferencePerformanceCounterRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "DeliveredPerformanceCounterRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "PerformanceLimitedRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "CPPCEnableRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "AutonomousSelectionEnableBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "AutonomousSelectionEnableInteger", 4, "0x%lx", NULL },
|
||||
{ "AutonomousActivityWindowRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "EnergyPerformancePreferenceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "ReferencePerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "ReferencePerformanceInteger", 4, "0x%lx", NULL },
|
||||
{ "LowestFrequencyBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "LowestFrequencyInteger", 4, "0x%lx", NULL },
|
||||
{ "NominalFrequencyBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE),
|
||||
NULL, NULL, AcpiGenericAddressParser,
|
||||
ARRAY_SIZE (AcpiGenericAddressParser) },
|
||||
{ "NominalFrequencyInteger", 4, "0x%lx", NULL },
|
||||
};
|
||||
|
||||
/** A parser for Arm namespace objects.
|
||||
*/
|
||||
STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
|
||||
@ -501,6 +580,8 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
|
||||
ARRAY_SIZE (CmArmPciAddressMapInfoParser) },
|
||||
{ "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser,
|
||||
ARRAY_SIZE (CmPciInterruptMapInfoParser) },
|
||||
{ "EArmObjCpcInfo", CmArmCpcInfoParser,
|
||||
ARRAY_SIZE (CmArmCpcInfoParser) },
|
||||
{ "EArmObjMax", NULL, 0 },
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user