140 строки
4.8 KiB
C
140 строки
4.8 KiB
C
/** @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_
|