/** @file | |
Copyright (c) 2017 - 2022, Arm Limited. All rights reserved. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
@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 <AcpiTableGenerator.h> | |
#include <SmbiosTableGenerator.h> | |
#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 | |
UINT8 AcpiTableRevision; | |
/// The ACPI Table Generator ID | |
ACPI_TABLE_GENERATOR_ID TableGeneratorId; | |
/// Optional pointer to the ACPI table data | |
EFI_ACPI_DESCRIPTION_HEADER *AcpiTableData; | |
/// An OEM-supplied string that the OEM uses to identify the particular | |
/// data table. This field is particularly useful when defining a definition | |
/// block to distinguish definition block functions. The OEM assigns each | |
/// dissimilar table a new OEM Table ID. | |
/// This field could be constructed using the SIGNATURE_64() macro. | |
/// e.g. SIGNATURE_64 ('A','R','M','H','G','T','D','T') | |
/// Note: If this field is not populated (has value of Zero), then the | |
/// Generators shall populate this information using part of the | |
/// CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.OemId field and the | |
/// ACPI table signature. | |
UINT64 OemTableId; | |
/// An OEM-supplied revision number. Larger numbers are assumed to be | |
/// newer revisions. | |
/// Note: If this field is not populated (has value of Zero), then the | |
/// Generators shall populate this information using the revision of the | |
/// Configuration Manager (CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.Revision). | |
UINT32 OemRevision; | |
/// The minor revision of an ACPI table if required by the table. | |
/// Note: If this field is not populated (has value of Zero), then the | |
/// Generators shall populate this information based on the latest minor | |
/// revision of the table that is supported by the generator. | |
/// e.g. This field can be used to specify the minor revision to be set | |
/// for the FADT table. | |
UINT8 MinorRevision; | |
} 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_ |