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