]> git.proxmox.com Git - mirror_edk2.git/blob - DynamicTablesPkg/Include/Protocol/DynamicTableFactoryProtocol.h
DynamicTablesPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / DynamicTablesPkg / Include / Protocol / DynamicTableFactoryProtocol.h
1 /** @file
2
3 Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 @par Glossary:
8 - ACPI - Advanced Configuration and Power Interface
9 - SMBIOS - System Management BIOS
10 - DT - Device Tree
11 **/
12
13 #ifndef DYNAMIC_TABLE_FACTORY_PROTOCOL_H_
14 #define DYNAMIC_TABLE_FACTORY_PROTOCOL_H_
15
16 #include <AcpiTableGenerator.h>
17 #include <SmbiosTableGenerator.h>
18 #include <DeviceTreeTableGenerator.h>
19
20 /** This macro defines the Dynamic Table Factory Protocol GUID.
21
22 GUID: {91D1E327-FE5A-49B8-AB65-0ECE2DDB45EC}
23 */
24 #define EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL_GUID \
25 { 0x91d1e327, 0xfe5a, 0x49b8, \
26 { 0xab, 0x65, 0xe, 0xce, 0x2d, 0xdb, 0x45, 0xec } \
27 };
28
29 /** This macro defines the Configuration Manager Protocol Revision.
30 */
31 #define EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL_REVISION CREATE_REVISION (1, 0)
32
33 #pragma pack(1)
34
35 /**
36 Forward declarations:
37 */
38 typedef struct DynamicTableFactoryProtocol EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL;
39 typedef struct DynamicTableFactoryInfo EDKII_DYNAMIC_TABLE_FACTORY_INFO;
40
41 /** Return a pointer to the ACPI table generator.
42
43 @param [in] This Pointer to the Dynamic Table Factory Protocol.
44 @param [in] TableId The ACPI table generator ID for the
45 requested generator.
46 @param [out] Generator Pointer to the requested ACPI table
47 generator.
48
49 @retval EFI_SUCCESS Success.
50 @retval EFI_INVALID_PARAMETER A parameter is invalid.
51 @retval EFI_NOT_FOUND The requested generator is not found
52 in the list of registered generators.
53 **/
54 typedef
55 EFI_STATUS
56 EFIAPI
57 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR) (
58 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,
59 IN CONST ACPI_TABLE_GENERATOR_ID GeneratorId,
60 OUT CONST ACPI_TABLE_GENERATOR ** CONST Generator
61 );
62
63 /** Registers an ACPI table generator.
64
65 @param [in] Generator Pointer to the ACPI table generator.
66
67 @retval EFI_SUCCESS The Generator was registered
68 successfully.
69 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
70 the Generator pointer is NULL.
71 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
72 already registered.
73 **/
74 typedef
75 EFI_STATUS
76 EFIAPI
77 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR) (
78 IN CONST ACPI_TABLE_GENERATOR * CONST Generator
79 );
80
81 /** Deregister an ACPI table generator.
82
83 @param [in] Generator Pointer to the ACPI table generator.
84
85 @retval EFI_SUCCESS Success.
86 @retval EFI_INVALID_PARAMETER The generator is invalid.
87 @retval EFI_NOT_FOUND The requested generator is not found
88 in the list of registered generators.
89 **/
90 typedef
91 EFI_STATUS
92 EFIAPI
93 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR) (
94 IN CONST ACPI_TABLE_GENERATOR * CONST Generator
95 );
96
97 /** Return a pointer to the SMBIOS table generator.
98
99 @param [in] This Pointer to the Dynamic Table Factory Protocol.
100 @param [in] TableId The SMBIOS table generator ID for the
101 requested generator.
102 @param [out] Generator Pointer to the requested SMBIOS table
103 generator.
104
105 @retval EFI_SUCCESS Success.
106 @retval EFI_INVALID_PARAMETER A parameter is invalid.
107 @retval EFI_NOT_FOUND The requested generator is not found
108 in the list of registered generators.
109 **/
110 typedef
111 EFI_STATUS
112 EFIAPI
113 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR) (
114 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,
115 IN CONST SMBIOS_TABLE_GENERATOR_ID GeneratorId,
116 OUT CONST SMBIOS_TABLE_GENERATOR ** CONST Generator
117 );
118
119 /** Register a SMBIOS table generator.
120
121 @param [in] Generator Pointer to the SMBIOS table generator.
122
123 @retval EFI_SUCCESS The Generator was registered
124 successfully.
125 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
126 the Generator pointer is NULL.
127 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
128 already registered.
129 **/
130 typedef
131 EFI_STATUS
132 EFIAPI
133 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR) (
134 IN CONST SMBIOS_TABLE_GENERATOR * CONST Generator
135 );
136
137 /** Deregister a SMBIOS table generator.
138
139 @param [in] Generator Pointer to the SMBIOS table generator.
140
141 @retval EFI_SUCCESS Success.
142 @retval EFI_INVALID_PARAMETER The generator is invalid.
143 @retval EFI_NOT_FOUND The requested generator is not found
144 in the list of registered generators.
145 **/
146 typedef
147 EFI_STATUS
148 EFIAPI
149 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_SMBIOS_TABLE_GENERATOR) (
150 IN CONST SMBIOS_TABLE_GENERATOR * CONST Generator
151 );
152
153 /** Return a pointer to the Device Tree table generator.
154
155 @param [in] This Pointer to the Dynamic Table Factory Protocol.
156 @param [in] TableId The Device Tree table generator ID for the
157 requested generator.
158 @param [out] Generator Pointer to the requested Device Tree table
159 generator.
160
161 @retval EFI_SUCCESS Success.
162 @retval EFI_INVALID_PARAMETER A parameter is invalid.
163 @retval EFI_NOT_FOUND The requested generator is not found
164 in the list of registered generators.
165 **/
166 typedef
167 EFI_STATUS
168 EFIAPI
169 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR) (
170 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,
171 IN CONST DT_TABLE_GENERATOR_ID GeneratorId,
172 OUT CONST DT_TABLE_GENERATOR ** CONST Generator
173 );
174
175 /** Register a DT table generator.
176
177 @param [in] Generator Pointer to the DT table generator.
178
179 @retval EFI_SUCCESS The Generator was registered
180 successfully.
181 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
182 the Generator pointer is NULL.
183 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
184 already registered.
185 **/
186 typedef
187 EFI_STATUS
188 EFIAPI
189 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR) (
190 IN CONST DT_TABLE_GENERATOR * CONST Generator
191 );
192
193 /** Deregister a DT table generator.
194
195 This function is called by the DT table generator to deregister itself
196 from the DT table factory.
197
198 @param [in] Generator Pointer to the DT table generator.
199
200 @retval EFI_SUCCESS Success.
201 @retval EFI_INVALID_PARAMETER The generator is invalid.
202 @retval EFI_NOT_FOUND The requested generator is not found
203 in the list of registered generators.
204 **/
205 typedef
206 EFI_STATUS
207 EFIAPI
208 (EFIAPI * EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR) (
209 IN CONST DT_TABLE_GENERATOR * CONST Generator
210 );
211
212 /** A structure describing the Dynamic Table Factory Protocol interface.
213 */
214 typedef struct DynamicTableFactoryProtocol {
215 /// The Dynamic Table Factory Protocol revision.
216 UINT32 Revision;
217
218 /// The interface used to request an ACPI Table Generator.
219 EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR GetAcpiTableGenerator;
220
221 /// Register an ACPI table Generator
222 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
223 RegisterAcpiTableGenerator;
224
225 /// Deregister an ACPI table Generator
226 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
227 DeregisterAcpiTableGenerator;
228
229 /// The interface used to request a SMBIOS Table Generator.
230 EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR GetSmbiosTableGenerator;
231
232 /// Register an SMBIOS table Generator
233 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
234 RegisterSmbiosTableGenerator;
235
236 /// Deregister an SMBIOS table Generator
237 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
238 DeregisterSmbiosTableGenerator;
239
240 /// The interface used to request a Device Tree Table Generator.
241 EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR GetDtTableGenerator;
242
243 /// Register a DT generator
244 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
245 RegisterDtTableGenerator;
246
247 /// Deregister a DT generator
248 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
249 DeregisterDtTableGenerator;
250
251 /** Pointer to the data structure that holds the
252 list of registered table generators
253 */
254 EDKII_DYNAMIC_TABLE_FACTORY_INFO * TableFactoryInfo;
255 } EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL;
256
257 /** The Dynamic Table Factory Protocol GUID.
258 */
259 extern EFI_GUID gEdkiiDynamicTableFactoryProtocolGuid;
260
261 #pragma pack()
262
263 #endif // DYNAMIC_TABLE_FACTORY_PROTOCOL_H_