| /** @file | |
| Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Glossary: | |
| - Cm or CM - Configuration Manager | |
| - Obj or OBJ - Object | |
| **/ | |
| #ifndef CONFIGURATION_MANAGER_H_ | |
| #define CONFIGURATION_MANAGER_H_ | |
| /// | |
| /// C array containing the compiled AML template. | |
| /// This symbol is defined in the auto generated C file | |
| /// containing the AML bytecode array. | |
| /// | |
| extern CHAR8 dsdt_aml_code[]; | |
| /// | |
| /// The configuration manager version. | |
| /// | |
| #define CONFIGURATION_MANAGER_REVISION CREATE_REVISION (1, 0) | |
| /// | |
| /// The OEM ID | |
| /// | |
| #define CFG_MGR_OEM_ID { 'A', 'R', 'M', 'L', 'T', 'D' } | |
| /// | |
| /// Memory address size limit. Assume the whole address space. | |
| /// | |
| #define MEMORY_ADDRESS_SIZE_LIMIT 64 | |
| /** A function that prepares Configuration Manager Objects for returning. | |
| @param [in] This Pointer to the Configuration Manager Protocol. | |
| @param [in] CmObjectId The Configuration Manager Object ID. | |
| @param [in] Token A token for identifying the object. | |
| @param [out] CmObject Pointer to the Configuration Manager Object | |
| descriptor describing the requested Object. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| @retval EFI_NOT_FOUND The required object information is not found. | |
| **/ | |
| typedef EFI_STATUS (*CM_OBJECT_HANDLER_PROC) ( | |
| IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This, | |
| IN CONST CM_OBJECT_ID CmObjectId, | |
| IN CONST CM_OBJECT_TOKEN Token, | |
| IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject | |
| ); | |
| /// | |
| /// A helper macro for mapping a reference token. | |
| /// | |
| #define REFERENCE_TOKEN(Field) \ | |
| (CM_OBJECT_TOKEN)((UINT8*)&mKvmtoolPlatRepositoryInfo + \ | |
| OFFSET_OF (EDKII_PLATFORM_REPOSITORY_INFO, Field)) | |
| /// | |
| /// The number of ACPI tables to install | |
| /// | |
| #define PLAT_ACPI_TABLE_COUNT 10 | |
| /// | |
| /// A structure describing the platform configuration | |
| /// manager repository information | |
| /// | |
| typedef struct PlatformRepositoryInfo { | |
| /// | |
| /// Configuration Manager Information. | |
| /// | |
| CM_STD_OBJ_CONFIGURATION_MANAGER_INFO CmInfo; | |
| /// | |
| /// List of ACPI tables | |
| /// | |
| CM_STD_OBJ_ACPI_TABLE_INFO CmAcpiTableList[PLAT_ACPI_TABLE_COUNT]; | |
| /// | |
| /// Power management profile information | |
| /// | |
| CM_ARM_POWER_MANAGEMENT_PROFILE_INFO PmProfileInfo; | |
| /// | |
| /// ITS Group node | |
| /// | |
| CM_ARM_ITS_GROUP_NODE ItsGroupInfo; | |
| /// | |
| /// ITS Identifier array | |
| /// | |
| CM_ARM_ITS_IDENTIFIER ItsIdentifierArray[1]; | |
| /// | |
| /// PCI Root complex node | |
| /// | |
| CM_ARM_ROOT_COMPLEX_NODE RootComplexInfo; | |
| /// | |
| /// Array of DeviceID mapping | |
| /// | |
| CM_ARM_ID_MAPPING DeviceIdMapping[1]; | |
| /// | |
| /// Dynamic platform repository. | |
| /// CmObj created by parsing the Kvmtool device tree are stored here. | |
| /// | |
| DYNAMIC_PLATFORM_REPOSITORY_INFO *DynamicPlatformRepo; | |
| /// | |
| /// Base address of the FDT. | |
| /// | |
| VOID *FdtBase; | |
| /// | |
| /// A handle to the FDT HwInfoParser. | |
| /// | |
| HW_INFO_PARSER_HANDLE FdtParserHandle; | |
| } EDKII_PLATFORM_REPOSITORY_INFO; | |
| #endif // CONFIGURATION_MANAGER_H_ |