--- /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
+ - Cm or CM - Configuration Manager\r
+ - Obj or OBJ - Object\r
+ - Std or STD - Standard\r
+**/\r
+\r
+#ifndef STANDARD_NAMESPACE_OBJECTS_H_\r
+#define STANDARD_NAMESPACE_OBJECTS_H_\r
+\r
+#include <AcpiTableGenerator.h>\r
+#include <SmbiosTableGenerator.h>\r
+\r
+#pragma pack(1)\r
+\r
+/** A macro defining a reserved zero/NULL token value that\r
+ does not identify any object.\r
+*/\r
+#define CM_NULL_TOKEN 0\r
+\r
+/** A reference token that the Configuration Manager can use\r
+ to identify a Configuration Manager object.\r
+\r
+ This can be used to differentiate between instances of\r
+ objects of the same types. The identification scheme is\r
+ implementation defined and is defined by the Configuration\r
+ Manager.\r
+\r
+ Typically the token is used to identify a specific instance\r
+ from a set of objects in a call to the GetObject()/SetObject(),\r
+ implemented by the Configuration Manager protocol.\r
+\r
+ Note: The token value 0 is reserved for a NULL token and does\r
+ not identify any object.\r
+**/\r
+typedef UINTN CM_OBJECT_TOKEN;\r
+\r
+/** The ESTD_OBJECT_ID enum describes the Object IDs\r
+ in the Standard Namespace.\r
+*/\r
+typedef enum StdObjectID {\r
+ EStdObjCfgMgrInfo = 0x00000000, ///< 0 - Configuration Manager Info\r
+ EStdObjAcpiTableList, ///< 1 - ACPI table Info List\r
+ EStdObjSmbiosTableList, ///< 2 - SMBIOS table Info List\r
+ EStdObjMax\r
+} ESTD_OBJECT_ID;\r
+\r
+/** A structure that describes the Configuration Manager Information.\r
+*/\r
+typedef struct CmStdObjConfigurationManagerInfo {\r
+ /// The Configuration Manager Revision.\r
+ UINT32 Revision;\r
+\r
+ /** The OEM ID. This information is used to\r
+ populate the ACPI table header information.\r
+ */\r
+ UINT8 OemId[6];\r
+} CM_STD_OBJ_CONFIGURATION_MANAGER_INFO;\r
+\r
+/** A structure used to describe the ACPI table generators to be invoked.\r
+\r
+ The AcpiTableData member of this structure may be used to directly provide\r
+ the binary ACPI table data which is required by the following standard\r
+ generators:\r
+ - RAW\r
+ - DSDT\r
+ - SSDT\r
+\r
+ Providing the ACPI table data is optional and depends on the generator\r
+ that is being invoked. If unused, set AcpiTableData to NULL.\r
+*/\r
+typedef struct CmAStdObjAcpiTableInfo {\r
+ /// The signature of the ACPI Table to be installed\r
+ UINT32 AcpiTableSignature;\r
+\r
+ /// The ACPI table revision\r
+ UINT32 AcpiTableRevision;\r
+\r
+ /// The ACPI Table Generator ID\r
+ ACPI_TABLE_GENERATOR_ID TableGeneratorId;\r
+\r
+ /// Optional pointer to the ACPI table data\r
+ EFI_ACPI_DESCRIPTION_HEADER * AcpiTableData;\r
+\r
+} CM_STD_OBJ_ACPI_TABLE_INFO;\r
+\r
+/** A structure used to describe the SMBIOS table generators to be invoked.\r
+\r
+ The SmbiosTableData member of this structure is used to provide\r
+ the SMBIOS table data which is required by the following standard\r
+ generator(s):\r
+ - RAW\r
+\r
+ Providing the SMBIOS table data is optional and depends on the\r
+ generator that is being invoked. If unused, set the SmbiosTableData\r
+ to NULL.\r
+*/\r
+typedef struct CmStdObjSmbiosTableInfo {\r
+ /// The SMBIOS Table Generator ID\r
+ SMBIOS_TABLE_GENERATOR_ID TableGeneratorId;\r
+\r
+ /// Optional pointer to the SMBIOS table data\r
+ SMBIOS_STRUCTURE * SmbiosTableData;\r
+} CM_STD_OBJ_SMBIOS_TABLE_INFO;\r
+\r
+#pragma pack()\r
+\r
+#endif // STANDARD_NAMESPACE_OBJECTS_H_\r