/** @file Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
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_