3 Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.
5 SPDX-License-Identifier: BSD-2-Clause-Patent
8 - ACPI - Advanced Configuration and Power Interface
9 - SMBIOS - System Management BIOS
13 #ifndef DYNAMIC_TABLE_FACTORY_PROTOCOL_H_
14 #define DYNAMIC_TABLE_FACTORY_PROTOCOL_H_
16 #include <AcpiTableGenerator.h>
17 #include <SmbiosTableGenerator.h>
18 #include <DeviceTreeTableGenerator.h>
20 /** This macro defines the Dynamic Table Factory Protocol GUID.
22 GUID: {91D1E327-FE5A-49B8-AB65-0ECE2DDB45EC}
24 #define EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL_GUID \
25 { 0x91d1e327, 0xfe5a, 0x49b8, \
26 { 0xab, 0x65, 0xe, 0xce, 0x2d, 0xdb, 0x45, 0xec } \
29 /** This macro defines the Configuration Manager Protocol Revision.
31 #define EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL_REVISION CREATE_REVISION (1, 0)
38 typedef struct DynamicTableFactoryProtocol EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL
;
39 typedef struct DynamicTableFactoryInfo EDKII_DYNAMIC_TABLE_FACTORY_INFO
;
41 /** Return a pointer to the ACPI table generator.
43 @param [in] This Pointer to the Dynamic Table Factory Protocol.
44 @param [in] TableId The ACPI table generator ID for the
46 @param [out] Generator Pointer to the requested ACPI table
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.
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
62 /** Registers an ACPI table generator.
64 @param [in] Generator Pointer to the ACPI table generator.
66 @retval EFI_SUCCESS The Generator was registered
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
75 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
)(
76 IN CONST ACPI_TABLE_GENERATOR
*CONST Generator
79 /** Deregister an ACPI table generator.
81 @param [in] Generator Pointer to the ACPI table generator.
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.
90 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
)(
91 IN CONST ACPI_TABLE_GENERATOR
*CONST Generator
94 /** Return a pointer to the SMBIOS table generator.
96 @param [in] This Pointer to the Dynamic Table Factory Protocol.
97 @param [in] TableId The SMBIOS table generator ID for the
99 @param [out] Generator Pointer to the requested SMBIOS table
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.
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
115 /** Register a SMBIOS table generator.
117 @param [in] Generator Pointer to the SMBIOS table generator.
119 @retval EFI_SUCCESS The Generator was registered
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
128 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
)(
129 IN CONST SMBIOS_TABLE_GENERATOR
*CONST Generator
132 /** Deregister a SMBIOS table generator.
134 @param [in] Generator Pointer to the SMBIOS table generator.
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.
143 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_SMBIOS_TABLE_GENERATOR
)(
144 IN CONST SMBIOS_TABLE_GENERATOR
*CONST Generator
147 /** Return a pointer to the Device Tree table generator.
149 @param [in] This Pointer to the Dynamic Table Factory Protocol.
150 @param [in] TableId The Device Tree table generator ID for the
152 @param [out] Generator Pointer to the requested Device Tree table
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.
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
168 /** Register a DT table generator.
170 @param [in] Generator Pointer to the DT table generator.
172 @retval EFI_SUCCESS The Generator was registered
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
181 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
)(
182 IN CONST DT_TABLE_GENERATOR
*CONST Generator
185 /** Deregister a DT table generator.
187 This function is called by the DT table generator to deregister itself
188 from the DT table factory.
190 @param [in] Generator Pointer to the DT table generator.
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.
199 (EFIAPI
*EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
)(
200 IN CONST DT_TABLE_GENERATOR
*CONST Generator
203 /** A structure describing the Dynamic Table Factory Protocol interface.
205 typedef struct DynamicTableFactoryProtocol
{
206 /// The Dynamic Table Factory Protocol revision.
209 /// The interface used to request an ACPI Table Generator.
210 EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR GetAcpiTableGenerator
;
212 /// Register an ACPI table Generator
213 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
214 RegisterAcpiTableGenerator
;
216 /// Deregister an ACPI table Generator
217 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
218 DeregisterAcpiTableGenerator
;
220 /// The interface used to request a SMBIOS Table Generator.
221 EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR GetSmbiosTableGenerator
;
223 /// Register an SMBIOS table Generator
224 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
225 RegisterSmbiosTableGenerator
;
227 /// Deregister an SMBIOS table Generator
228 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
229 DeregisterSmbiosTableGenerator
;
231 /// The interface used to request a Device Tree Table Generator.
232 EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR GetDtTableGenerator
;
234 /// Register a DT generator
235 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
236 RegisterDtTableGenerator
;
238 /// Deregister a DT generator
239 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
240 DeregisterDtTableGenerator
;
242 /** Pointer to the data structure that holds the
243 list of registered table generators
245 EDKII_DYNAMIC_TABLE_FACTORY_INFO
*TableFactoryInfo
;
246 } EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL
;
248 /** The Dynamic Table Factory Protocol GUID.
250 extern EFI_GUID gEdkiiDynamicTableFactoryProtocolGuid
;
254 #endif // DYNAMIC_TABLE_FACTORY_PROTOCOL_H_