]> git.proxmox.com Git - mirror_edk2.git/blob - DynamicTablesPkg/Include/Protocol/DynamicTableFactoryProtocol.h
DynamicTablesPkg: Apply uncrustify changes
[mirror_edk2.git] / DynamicTablesPkg / Include / Protocol / DynamicTableFactoryProtocol.h
1 /** @file
2
3 Copyright (c) 2017 - 2019, 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 *EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR)(
57 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST This,
58 IN CONST ACPI_TABLE_GENERATOR_ID GeneratorId,
59 OUT CONST ACPI_TABLE_GENERATOR **CONST Generator
60 );
61
62 /** Registers an ACPI table generator.
63
64 @param [in] Generator Pointer to the ACPI table generator.
65
66 @retval EFI_SUCCESS The Generator was registered
67 successfully.
68 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
69 the Generator pointer is NULL.
70 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
71 already registered.
72 **/
73 typedef
74 EFI_STATUS
75 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR)(
76 IN CONST ACPI_TABLE_GENERATOR *CONST Generator
77 );
78
79 /** Deregister an ACPI table generator.
80
81 @param [in] Generator Pointer to the ACPI table generator.
82
83 @retval EFI_SUCCESS Success.
84 @retval EFI_INVALID_PARAMETER The generator is invalid.
85 @retval EFI_NOT_FOUND The requested generator is not found
86 in the list of registered generators.
87 **/
88 typedef
89 EFI_STATUS
90 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR)(
91 IN CONST ACPI_TABLE_GENERATOR *CONST Generator
92 );
93
94 /** Return a pointer to the SMBIOS table generator.
95
96 @param [in] This Pointer to the Dynamic Table Factory Protocol.
97 @param [in] TableId The SMBIOS table generator ID for the
98 requested generator.
99 @param [out] Generator Pointer to the requested SMBIOS table
100 generator.
101
102 @retval EFI_SUCCESS Success.
103 @retval EFI_INVALID_PARAMETER A parameter is invalid.
104 @retval EFI_NOT_FOUND The requested generator is not found
105 in the list of registered generators.
106 **/
107 typedef
108 EFI_STATUS
109 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR)(
110 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST This,
111 IN CONST SMBIOS_TABLE_GENERATOR_ID GeneratorId,
112 OUT CONST SMBIOS_TABLE_GENERATOR **CONST Generator
113 );
114
115 /** Register a SMBIOS table generator.
116
117 @param [in] Generator Pointer to the SMBIOS table generator.
118
119 @retval EFI_SUCCESS The Generator was registered
120 successfully.
121 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
122 the Generator pointer is NULL.
123 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
124 already registered.
125 **/
126 typedef
127 EFI_STATUS
128 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR)(
129 IN CONST SMBIOS_TABLE_GENERATOR *CONST Generator
130 );
131
132 /** Deregister a SMBIOS table generator.
133
134 @param [in] Generator Pointer to the SMBIOS table generator.
135
136 @retval EFI_SUCCESS Success.
137 @retval EFI_INVALID_PARAMETER The generator is invalid.
138 @retval EFI_NOT_FOUND The requested generator is not found
139 in the list of registered generators.
140 **/
141 typedef
142 EFI_STATUS
143 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_SMBIOS_TABLE_GENERATOR)(
144 IN CONST SMBIOS_TABLE_GENERATOR *CONST Generator
145 );
146
147 /** Return a pointer to the Device Tree table generator.
148
149 @param [in] This Pointer to the Dynamic Table Factory Protocol.
150 @param [in] TableId The Device Tree table generator ID for the
151 requested generator.
152 @param [out] Generator Pointer to the requested Device Tree table
153 generator.
154
155 @retval EFI_SUCCESS Success.
156 @retval EFI_INVALID_PARAMETER A parameter is invalid.
157 @retval EFI_NOT_FOUND The requested generator is not found
158 in the list of registered generators.
159 **/
160 typedef
161 EFI_STATUS
162 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR)(
163 IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL *CONST This,
164 IN CONST DT_TABLE_GENERATOR_ID GeneratorId,
165 OUT CONST DT_TABLE_GENERATOR **CONST Generator
166 );
167
168 /** Register a DT table generator.
169
170 @param [in] Generator Pointer to the DT table generator.
171
172 @retval EFI_SUCCESS The Generator was registered
173 successfully.
174 @retval EFI_INVALID_PARAMETER The Generator ID is invalid or
175 the Generator pointer is NULL.
176 @retval EFI_ALREADY_STARTED The Generator for the Table ID is
177 already registered.
178 **/
179 typedef
180 EFI_STATUS
181 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR)(
182 IN CONST DT_TABLE_GENERATOR *CONST Generator
183 );
184
185 /** Deregister a DT table generator.
186
187 This function is called by the DT table generator to deregister itself
188 from the DT table factory.
189
190 @param [in] Generator Pointer to the DT table generator.
191
192 @retval EFI_SUCCESS Success.
193 @retval EFI_INVALID_PARAMETER The generator is invalid.
194 @retval EFI_NOT_FOUND The requested generator is not found
195 in the list of registered generators.
196 **/
197 typedef
198 EFI_STATUS
199 (EFIAPI *EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR)(
200 IN CONST DT_TABLE_GENERATOR *CONST Generator
201 );
202
203 /** A structure describing the Dynamic Table Factory Protocol interface.
204 */
205 typedef struct DynamicTableFactoryProtocol {
206 /// The Dynamic Table Factory Protocol revision.
207 UINT32 Revision;
208
209 /// The interface used to request an ACPI Table Generator.
210 EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR GetAcpiTableGenerator;
211
212 /// Register an ACPI table Generator
213 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
214 RegisterAcpiTableGenerator;
215
216 /// Deregister an ACPI table Generator
217 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
218 DeregisterAcpiTableGenerator;
219
220 /// The interface used to request a SMBIOS Table Generator.
221 EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR GetSmbiosTableGenerator;
222
223 /// Register an SMBIOS table Generator
224 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
225 RegisterSmbiosTableGenerator;
226
227 /// Deregister an SMBIOS table Generator
228 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
229 DeregisterSmbiosTableGenerator;
230
231 /// The interface used to request a Device Tree Table Generator.
232 EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR GetDtTableGenerator;
233
234 /// Register a DT generator
235 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
236 RegisterDtTableGenerator;
237
238 /// Deregister a DT generator
239 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
240 DeregisterDtTableGenerator;
241
242 /** Pointer to the data structure that holds the
243 list of registered table generators
244 */
245 EDKII_DYNAMIC_TABLE_FACTORY_INFO *TableFactoryInfo;
246 } EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL;
247
248 /** The Dynamic Table Factory Protocol GUID.
249 */
250 extern EFI_GUID gEdkiiDynamicTableFactoryProtocolGuid;
251
252 #pragma pack()
253
254 #endif // DYNAMIC_TABLE_FACTORY_PROTOCOL_H_