]> git.proxmox.com Git - mirror_edk2.git/blob - ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h
ArmVirtPkg/Kvmtool: Add Configuration Manager
[mirror_edk2.git] / ArmVirtPkg / KvmtoolCfgMgrDxe / ConfigurationManager.h
1 /** @file
2
3 Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.<BR>
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 @par Glossary:
8 - Cm or CM - Configuration Manager
9 - Obj or OBJ - Object
10 **/
11
12 #ifndef CONFIGURATION_MANAGER_H_
13 #define CONFIGURATION_MANAGER_H_
14
15 ///
16 /// C array containing the compiled AML template.
17 /// This symbol is defined in the auto generated C file
18 /// containing the AML bytecode array.
19 ///
20 extern CHAR8 dsdt_aml_code[];
21
22 ///
23 /// The configuration manager version.
24 ///
25 #define CONFIGURATION_MANAGER_REVISION CREATE_REVISION (1, 0)
26
27 ///
28 /// The OEM ID
29 ///
30 #define CFG_MGR_OEM_ID { 'A', 'R', 'M', 'L', 'T', 'D' }
31
32 ///
33 /// Memory address size limit. Assume the whole address space.
34 ///
35 #define MEMORY_ADDRESS_SIZE_LIMIT 64
36
37 /** A function that prepares Configuration Manager Objects for returning.
38
39 @param [in] This Pointer to the Configuration Manager Protocol.
40 @param [in] CmObjectId The Configuration Manager Object ID.
41 @param [in] Token A token for identifying the object.
42 @param [out] CmObject Pointer to the Configuration Manager Object
43 descriptor describing the requested Object.
44
45 @retval EFI_SUCCESS Success.
46 @retval EFI_INVALID_PARAMETER A parameter is invalid.
47 @retval EFI_NOT_FOUND The required object information is not found.
48 **/
49 typedef EFI_STATUS (*CM_OBJECT_HANDLER_PROC) (
50 IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST This,
51 IN CONST CM_OBJECT_ID CmObjectId,
52 IN CONST CM_OBJECT_TOKEN Token,
53 IN OUT CM_OBJ_DESCRIPTOR *CONST CmObject
54 );
55
56 ///
57 /// A helper macro for mapping a reference token.
58 ///
59 #define REFERENCE_TOKEN(Field) \
60 (CM_OBJECT_TOKEN)((UINT8*)&mKvmtoolPlatRepositoryInfo + \
61 OFFSET_OF (EDKII_PLATFORM_REPOSITORY_INFO, Field))
62
63 ///
64 /// The number of ACPI tables to install
65 ///
66 #define PLAT_ACPI_TABLE_COUNT 10
67
68 ///
69 /// A structure describing the platform configuration
70 /// manager repository information
71 ///
72 typedef struct PlatformRepositoryInfo {
73 ///
74 /// Configuration Manager Information.
75 ///
76 CM_STD_OBJ_CONFIGURATION_MANAGER_INFO CmInfo;
77
78 ///
79 /// List of ACPI tables
80 ///
81 CM_STD_OBJ_ACPI_TABLE_INFO CmAcpiTableList[PLAT_ACPI_TABLE_COUNT];
82
83 ///
84 /// Power management profile information
85 ///
86 CM_ARM_POWER_MANAGEMENT_PROFILE_INFO PmProfileInfo;
87
88 ///
89 /// ITS Group node
90 ///
91 CM_ARM_ITS_GROUP_NODE ItsGroupInfo;
92
93 ///
94 /// ITS Identifier array
95 ///
96 CM_ARM_ITS_IDENTIFIER ItsIdentifierArray[1];
97
98 ///
99 /// PCI Root complex node
100 ///
101 CM_ARM_ROOT_COMPLEX_NODE RootComplexInfo;
102
103 ///
104 /// Array of DeviceID mapping
105 ///
106 CM_ARM_ID_MAPPING DeviceIdMapping[1];
107
108 ///
109 /// Dynamic platform repository.
110 /// CmObj created by parsing the Kvmtool device tree are stored here.
111 ///
112 DYNAMIC_PLATFORM_REPOSITORY_INFO *DynamicPlatformRepo;
113
114 ///
115 /// Base address of the FDT.
116 ///
117 VOID *FdtBase;
118
119 ///
120 /// A handle to the FDT HwInfoParser.
121 ///
122 HW_INFO_PARSER_HANDLE FdtParserHandle;
123 } EDKII_PLATFORM_REPOSITORY_INFO;
124
125 #endif // CONFIGURATION_MANAGER_H_