mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
The CM_STD_OBJ_ACPI_TABLE_INFO.AcpiTableRevision can be used to specify the major revision number of the ACPI table that the generator must use. Although most ACPI tables only have a major revision number, the FADT table additionally has a minor revision number. The FADT generator currently defaults to setting the latest supported ACPI revision for the FADT table i.e. ACPI 6.4. This means that the minor revision for the FADT table is always set to 4 and there is no provision for a user to specify the minor revision to be selected. Therefore, update CM_STD_OBJ_ACPI_TABLE_INFO to introduce a new field MinorRevision which can be used to specify the minor revision for an ACPI table. Also update the FADT generator to validate the supported FADT revisions ans use the specified minor revision for the FADT table if supported. If an unsupported minor revision is specified the FADT generator defaults to the latest supported minor revision. Since the CM_STD_OBJ_ACPI_TABLE_INFO.MinorRevision field is added to the end of the structure, it should not break existing platform code. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: <pierre.gondois@arm.com> Tested-by: Jagadeesh Ujja <Jagadeesh.Ujja@arm.com>
140 lines
4.8 KiB
C
140 lines
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_
|