3 Copyright (c) 2017 - 2018, 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.
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
63 /** Registers an ACPI table generator.
65 @param [in] Generator Pointer to the ACPI table generator.
67 @retval EFI_SUCCESS The Generator was registered
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
77 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
) (
78 IN CONST ACPI_TABLE_GENERATOR
* CONST Generator
81 /** Deregister an ACPI table generator.
83 @param [in] Generator Pointer to the ACPI table generator.
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.
93 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
) (
94 IN CONST ACPI_TABLE_GENERATOR
* CONST Generator
97 /** Return a pointer to the SMBIOS table generator.
99 @param [in] This Pointer to the Dynamic Table Factory Protocol.
100 @param [in] TableId The SMBIOS table generator ID for the
102 @param [out] Generator Pointer to the requested SMBIOS table
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.
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
119 /** Register a SMBIOS table generator.
121 @param [in] Generator Pointer to the SMBIOS table generator.
123 @retval EFI_SUCCESS The Generator was registered
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
133 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
) (
134 IN CONST SMBIOS_TABLE_GENERATOR
* CONST Generator
137 /** Deregister a SMBIOS table generator.
139 @param [in] Generator Pointer to the SMBIOS table generator.
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.
149 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_SMBIOS_TABLE_GENERATOR
) (
150 IN CONST SMBIOS_TABLE_GENERATOR
* CONST Generator
153 /** Return a pointer to the Device Tree table generator.
155 @param [in] This Pointer to the Dynamic Table Factory Protocol.
156 @param [in] TableId The Device Tree table generator ID for the
158 @param [out] Generator Pointer to the requested Device Tree table
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.
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
175 /** Register a DT table generator.
177 @param [in] Generator Pointer to the DT table generator.
179 @retval EFI_SUCCESS The Generator was registered
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
189 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
) (
190 IN CONST DT_TABLE_GENERATOR
* CONST Generator
193 /** Deregister a DT table generator.
195 This function is called by the DT table generator to deregister itself
196 from the DT table factory.
198 @param [in] Generator Pointer to the DT table generator.
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.
208 (EFIAPI
* EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
) (
209 IN CONST DT_TABLE_GENERATOR
* CONST Generator
212 /** A structure describing the Dynamic Table Factory Protocol interface.
214 typedef struct DynamicTableFactoryProtocol
{
215 /// The Dynamic Table Factory Protocol revision.
218 /// The interface used to request an ACPI Table Generator.
219 EDKII_DYNAMIC_TABLE_FACTORY_GET_ACPI_TABLE_GENERATOR GetAcpiTableGenerator
;
221 /// Register an ACPI table Generator
222 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_ACPI_TABLE_GENERATOR
223 RegisterAcpiTableGenerator
;
225 /// Deregister an ACPI table Generator
226 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_ACPI_TABLE_GENERATOR
227 DeregisterAcpiTableGenerator
;
229 /// The interface used to request a SMBIOS Table Generator.
230 EDKII_DYNAMIC_TABLE_FACTORY_GET_SMBIOS_TABLE_GENERATOR GetSmbiosTableGenerator
;
232 /// Register an SMBIOS table Generator
233 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
234 RegisterSmbiosTableGenerator
;
236 /// Deregister an SMBIOS table Generator
237 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_SMBIOS_TABLE_GENERATOR
238 DeregisterSmbiosTableGenerator
;
240 /// The interface used to request a Device Tree Table Generator.
241 EDKII_DYNAMIC_TABLE_FACTORY_GET_DT_TABLE_GENERATOR GetDtTableGenerator
;
243 /// Register a DT generator
244 EDKII_DYNAMIC_TABLE_FACTORY_REGISTER_DT_TABLE_GENERATOR
245 RegisterDtTableGenerator
;
247 /// Deregister a DT generator
248 EDKII_DYNAMIC_TABLE_FACTORY_DEREGISTER_DT_TABLE_GENERATOR
249 DeregisterDtTableGenerator
;
251 /** Pointer to the data structure that holds the
252 list of registered table generators
254 EDKII_DYNAMIC_TABLE_FACTORY_INFO
* TableFactoryInfo
;
255 } EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL
;
257 /** The Dynamic Table Factory Protocol GUID.
259 extern EFI_GUID gEdkiiDynamicTableFactoryProtocolGuid
;
263 #endif // DYNAMIC_TABLE_FACTORY_PROTOCOL_H_