--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.\r
+\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+ @par Glossary:\r
+ - Std - Standard\r
+ - ACPI - Advanced Configuration and Power Interface\r
+ - SMBIOS - System Management BIOS\r
+ - DT - Device Tree\r
+**/\r
+\r
+#ifndef DYNAMIC_TABLE_FACTORY_H_\r
+#define DYNAMIC_TABLE_FACTORY_H_\r
+\r
+#pragma pack(1)\r
+\r
+/** A structure that holds the list of registered ACPI and\r
+ SMBIOS table generators.\r
+*/\r
+typedef struct DynamicTableFactoryInfo {\r
+ /// An array for holding the list of Standard ACPI Table Generators.\r
+ CONST ACPI_TABLE_GENERATOR *\r
+ StdAcpiTableGeneratorList[EStdAcpiTableIdMax];\r
+\r
+ /// An array for holding the list of Custom ACPI Table Generators.\r
+ CONST ACPI_TABLE_GENERATOR *\r
+ CustomAcpiTableGeneratorList[FixedPcdGet16 (\r
+ PcdMaxCustomACPIGenerators\r
+ )];\r
+\r
+ /// An array for holding the list of Standard SMBIOS Table Generators.\r
+ CONST SMBIOS_TABLE_GENERATOR *\r
+ StdSmbiosTableGeneratorList[EStdSmbiosTableIdMax];\r
+\r
+ /// An array for holding the list of Custom SMBIOS Table Generators.\r
+ CONST SMBIOS_TABLE_GENERATOR *\r
+ CustomSmbiosTableGeneratorList[FixedPcdGet16 (\r
+ PcdMaxCustomSMBIOSGenerators\r
+ )];\r
+\r
+ /// An array for holding the list of Standard DT Table Generators.\r
+ CONST DT_TABLE_GENERATOR *\r
+ StdDtTableGeneratorList[EStdDtTableIdMax];\r
+\r
+ /// An array for holding the list of Custom DT Table Generators.\r
+ CONST DT_TABLE_GENERATOR *\r
+ CustomDtTableGeneratorList[FixedPcdGet16 (\r
+ PcdMaxCustomDTGenerators\r
+ )];\r
+} EDKII_DYNAMIC_TABLE_FACTORY_INFO;\r
+\r
+/** Return a pointer to the ACPI table generator.\r
+\r
+ @param [in] This Pointer to the Dynamic Table Factory Protocol.\r
+ @param [in] GeneratorId The ACPI table generator ID for the\r
+ requested generator.\r
+ @param [out] Generator Pointer to the requested ACPI table\r
+ generator.\r
+\r
+ @retval EFI_SUCCESS Success.\r
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+ @retval EFI_NOT_FOUND The requested generator is not found\r
+ in the list of registered generators.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetAcpiTableGenerator (\r
+ IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,\r
+ IN CONST ACPI_TABLE_GENERATOR_ID GeneratorId,\r
+ OUT CONST ACPI_TABLE_GENERATOR ** CONST Generator\r
+ );\r
+\r
+/** Return a pointer to the SMBIOS table generator.\r
+\r
+ @param [in] This Pointer to the Dynamic Table Factory Protocol.\r
+ @param [in] GeneratorId The SMBIOS table generator ID for the\r
+ requested generator.\r
+ @param [out] Generator Pointer to the requested SMBIOS table\r
+ generator.\r
+\r
+ @retval EFI_SUCCESS Success.\r
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+ @retval EFI_NOT_FOUND The requested generator is not found\r
+ in the list of registered generators.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetSmbiosTableGenerator (\r
+ IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,\r
+ IN CONST SMBIOS_TABLE_GENERATOR_ID GeneratorId,\r
+ OUT CONST SMBIOS_TABLE_GENERATOR ** CONST Generator\r
+ );\r
+\r
+/** Return a pointer to the DT table generator.\r
+\r
+ @param [in] This Pointer to the Dynamic Table Factory Protocol.\r
+ @param [in] GeneratorId The DT table generator ID for the\r
+ requested generator.\r
+ @param [out] Generator Pointer to the requested DT table\r
+ generator.\r
+\r
+ @retval EFI_SUCCESS Success.\r
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+ @retval EFI_NOT_FOUND The requested generator is not found\r
+ in the list of registered generators.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetDtTableGenerator (\r
+ IN CONST EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL * CONST This,\r
+ IN CONST DT_TABLE_GENERATOR_ID GeneratorId,\r
+ OUT CONST DT_TABLE_GENERATOR ** CONST Generator\r
+ );\r
+\r
+#pragma pack()\r
+\r
+#endif // DYNAMIC_TABLE_FACTORY_H_\r