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_
|
---|