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