blob: 3373948bc4eb92c5518d657131e919e928a5e614 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/** @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_
|