/** @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_ |