DynamicTablesPkg: Add CM_ARM_LPI_INFO object

Introduce the CM_ARM_LPI_INFO CmObj in the ArmNameSpaceObjects.
This allows to describe LPI state information, as described in
ACPI 6.4, s8.4.4.3 "_LPI (Low Power Idle States)".

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
This commit is contained in:
Pierre Gondois
2021-10-08 15:46:31 +01:00
committed by mergify[bot]
parent a5e36ad9bc
commit f17ef10e63
2 changed files with 103 additions and 0 deletions

View File

@ -368,6 +368,39 @@ STATIC CONST CM_OBJ_PARSER CmArmCmn600InfoParser[] = {
{"DtcFlags[3]", 4, "0x%x", NULL}
};
/** A parser for the EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE structure.
*/
STATIC CONST CM_OBJ_PARSER AcpiGenericAddressParser[] = {
{"AddressSpaceId", 1, "%d", NULL},
{"RegisterBitWidth", 1, "%d", NULL},
{"RegisterBitOffset", 1, "%d", NULL},
{"AccessSize", 1, "%d", NULL},
{"Address", 8, "0x%llx", NULL},
};
/** A parser for EArmObjLpiInfo.
*/
STATIC CONST CM_OBJ_PARSER CmArmLpiInfoParser[] = {
{"MinResidency", 4, "0x%llx", NULL},
{"WorstCaseWakeLatency", 4, "0x%llx", NULL},
{"Flags", 4, "0x%llx", NULL},
{"ArchFlags", 4, "0x%llx", NULL},
{"ResCntFreq", 4, "0x%llx", NULL},
{"EnableParentState", 4, "0x%llx", NULL},
{"IsInteger", 1, "%d", NULL},
{"IntegerEntryMethod", 8, "0x%llx", NULL},
{"RegisterEntryMethod", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE),
NULL, NULL, AcpiGenericAddressParser,
ARRAY_SIZE (AcpiGenericAddressParser)},
{"ResidencyCounterRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE),
NULL, NULL, AcpiGenericAddressParser,
ARRAY_SIZE (AcpiGenericAddressParser)},
{"UsageCounterRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE),
NULL, NULL, AcpiGenericAddressParser,
ARRAY_SIZE (AcpiGenericAddressParser)},
{"StateName", 16, "0x%a", NULL},
};
/** A parser for Arm namespace objects.
*/
STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
@ -440,6 +473,8 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
ARRAY_SIZE (CmArmSerialPortInfoParser)},
{"EArmObjCmn600Info", CmArmCmn600InfoParser,
ARRAY_SIZE (CmArmCmn600InfoParser)},
{"EArmObjLpiInfo", CmArmLpiInfoParser,
ARRAY_SIZE (CmArmLpiInfoParser)},
{"EArmObjMax", NULL, 0},
};