diff --git a/DynamicTablesPkg/Include/StandardNameSpaceObjects.h b/DynamicTablesPkg/Include/StandardNameSpaceObjects.h new file mode 100644 index 0000000000..4377ee8f78 --- /dev/null +++ b/DynamicTablesPkg/Include/StandardNameSpaceObjects.h @@ -0,0 +1,119 @@ +/** @file + + Copyright (c) 2017 - 2019, ARM Limited. All rights reserved. + + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + @par Glossary: + - Cm or CM - Configuration Manager + - Obj or OBJ - Object + - Std or STD - Standard +**/ + +#ifndef STANDARD_NAMESPACE_OBJECTS_H_ +#define STANDARD_NAMESPACE_OBJECTS_H_ + +#include +#include + +#pragma pack(1) + +/** A macro defining a reserved zero/NULL token value that + does not identify any object. +*/ +#define CM_NULL_TOKEN 0 + +/** A reference token that the Configuration Manager can use + to identify a Configuration Manager object. + + This can be used to differentiate between instances of + objects of the same types. The identification scheme is + implementation defined and is defined by the Configuration + Manager. + + Typically the token is used to identify a specific instance + from a set of objects in a call to the GetObject()/SetObject(), + implemented by the Configuration Manager protocol. + + Note: The token value 0 is reserved for a NULL token and does + not identify any object. +**/ +typedef UINTN CM_OBJECT_TOKEN; + +/** The ESTD_OBJECT_ID enum describes the Object IDs + in the Standard Namespace. +*/ +typedef enum StdObjectID { + EStdObjCfgMgrInfo = 0x00000000, ///< 0 - Configuration Manager Info + EStdObjAcpiTableList, ///< 1 - ACPI table Info List + EStdObjSmbiosTableList, ///< 2 - SMBIOS table Info List + EStdObjMax +} ESTD_OBJECT_ID; + +/** A structure that describes the Configuration Manager Information. +*/ +typedef struct CmStdObjConfigurationManagerInfo { + /// The Configuration Manager Revision. + UINT32 Revision; + + /** The OEM ID. This information is used to + populate the ACPI table header information. + */ + UINT8 OemId[6]; +} CM_STD_OBJ_CONFIGURATION_MANAGER_INFO; + +/** A structure used to describe the ACPI table generators to be invoked. + + The AcpiTableData member of this structure may be used to directly provide + the binary ACPI table data which is required by the following standard + generators: + - RAW + - DSDT + - SSDT + + Providing the ACPI table data is optional and depends on the generator + that is being invoked. If unused, set AcpiTableData to NULL. +*/ +typedef struct CmAStdObjAcpiTableInfo { + /// The signature of the ACPI Table to be installed + UINT32 AcpiTableSignature; + + /// The ACPI table revision + UINT32 AcpiTableRevision; + + /// The ACPI Table Generator ID + ACPI_TABLE_GENERATOR_ID TableGeneratorId; + + /// Optional pointer to the ACPI table data + EFI_ACPI_DESCRIPTION_HEADER * AcpiTableData; + +} CM_STD_OBJ_ACPI_TABLE_INFO; + +/** A structure used to describe the SMBIOS table generators to be invoked. + + The SmbiosTableData member of this structure is used to provide + the SMBIOS table data which is required by the following standard + generator(s): + - RAW + + Providing the SMBIOS table data is optional and depends on the + generator that is being invoked. If unused, set the SmbiosTableData + to NULL. +*/ +typedef struct CmStdObjSmbiosTableInfo { + /// The SMBIOS Table Generator ID + SMBIOS_TABLE_GENERATOR_ID TableGeneratorId; + + /// Optional pointer to the SMBIOS table data + SMBIOS_STRUCTURE * SmbiosTableData; +} CM_STD_OBJ_SMBIOS_TABLE_INFO; + +#pragma pack() + +#endif // STANDARD_NAMESPACE_OBJECTS_H_