| /** @file | |
| Copyright (c) 2017 - 2019, ARM Limited. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Glossary: | |
| - ACPI - Advanced Configuration and Power Interface | |
| - SMBIOS - System Management BIOS | |
| - DT - Device Tree | |
| **/ | |
| #ifndef TABLE_GENERATOR_H_ | |
| #define TABLE_GENERATOR_H_ | |
| /** The TABLE_GENERATOR_ID type describes the Table Generator ID | |
| Table Generator ID | |
| _______________________________________________________________________________ | |
| | 31 | 30 |29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17| 16| | |
| ------------------------------------------------------------------------------- | |
| |TNSID| 0 | TT | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0| 0| | |
| _______________________________________________________________________________ | |
| _______________________________________________________________________________ | |
| |15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0| | |
| ------------------------------------------------------------------------------- | |
| | Table ID | | |
| _______________________________________________________________________________ | |
| Bit [31] - Table NameSpace ID (TNSID) | |
| 0 - Standard | |
| 1 - Custom/OEM | |
| Bit [30] - Reserved, Must be Zero | |
| Bit [29:28] - Table Type (TT) | |
| 0 - ACPI Table | |
| 1 - SMBIOS Table | |
| 2 - DT (Device Tree) Table | |
| 3 - Reserved (INVALID) | |
| Bit [27:16] - Reserved, Must Be Zero | |
| Bit [15:0] - Table ID | |
| Standard ACPI Table IDs: | |
| 0 - Reserved | |
| 1 - RAW | |
| 2 - FADT | |
| 3 - DSDT | |
| 4 - SSDT | |
| 5 - MADT | |
| 6 - GTDT | |
| 7 - DBG2 | |
| 8 - SPCR | |
| 9 - MCFG | |
| 10 - PPTT | |
| Standard SMBIOS Table IDs: | |
| 0 - Reserved | |
| 1 - RAW | |
| 2 - Table Type00 | |
| 3 - Table Type01 | |
| 4 - Table Type02 | |
| 5 - Table Type03 | |
| 6 - Table Type04 | |
| 7 - Table Type05 | |
| 8 - Table Type06 | |
| 9 - Table Type07 | |
| 10 - Table Type08 | |
| 11 - Table Type09 | |
| 12 - Table Type10 | |
| 13 - Table Type11 | |
| 14 - Table Type12 | |
| 15 - Table Type13 | |
| 16 - Table Type14 | |
| 17 - Table Type15 | |
| 18 - Table Type16 | |
| 19 - Table Type17 | |
| 20 - Table Type18 | |
| 21 - Table Type19 | |
| 22 - Table Type20 | |
| 23 - Table Type21 | |
| 24 - Table Type22 | |
| 25 - Table Type23 | |
| 26 - Table Type24 | |
| 27 - Table Type25 | |
| 28 - Table Type26 | |
| 29 - Table Type27 | |
| 30 - Table Type28 | |
| 31 - Table Type29 | |
| 32 - Table Type30 | |
| 33 - Table Type31 | |
| 34 - Table Type32 | |
| 35 - Table Type33 | |
| 36 - Table Type34 | |
| 37 - Table Type35 | |
| 38 - Table Type36 | |
| 39 - Table Type37 | |
| 40 - Table Type38 | |
| 41 - Table Type39 | |
| 42 - Table Type40 | |
| 43 - Table Type41 | |
| 44 - Table Type42 | |
| 45-127 - Reserved | |
| 128 - Table Type126 | |
| 129 - Table Type127 | |
| **/ | |
| typedef UINT32 TABLE_GENERATOR_ID; | |
| /** This enum lists the Table Generator Types. | |
| */ | |
| typedef enum TableGeneratorType { | |
| ETableGeneratorTypeAcpi = 0, ///< ACPI Table Generator Type. | |
| ETableGeneratorTypeSmbios, ///< SMBIOS Table Generator Type. | |
| ETableGeneratorTypeDt, ///< Device Tree Table Generator Type. | |
| ETableGeneratorTypeReserved | |
| } ETABLE_GENERATOR_TYPE; | |
| /** This enum lists the namespaces for the Table Generators. | |
| */ | |
| typedef enum TableGeneratorNameSpace { | |
| ETableGeneratorNameSpaceStd = 0, ///< Standard Namespace. | |
| ETableGeneratorNameSpaceOem ///< OEM Namespace. | |
| } ETABLE_GENERATOR_NAMESPACE; | |
| /** A mask for the Table ID bits of TABLE_GENERATOR_ID. | |
| */ | |
| #define TABLE_ID_MASK 0xFF | |
| /** A mask for the Namespace ID bits of TABLE_GENERATOR_ID. | |
| */ | |
| #define TABLE_NAMESPACEID_MASK (BIT31) | |
| /** A mask for the Table Type bits of TABLE_GENERATOR_ID. | |
| */ | |
| #define TABLE_TYPE_MASK (BIT29 | BIT28) | |
| /** Starting bit position for the Table Type bits | |
| */ | |
| #define TABLE_TYPE_BIT_SHIFT 28 | |
| /** Starting bit position for the Table Namespace ID bit | |
| */ | |
| #define TABLE_NAMESPACE_ID_BIT_SHIFT 31 | |
| /** This macro returns the Table ID from the TableGeneratorId. | |
| @param [in] TableGeneratorId The table generator ID. | |
| @return the Table ID described by the TableGeneratorId. | |
| **/ | |
| #define GET_TABLE_ID(TableGeneratorId) \ | |
| ((TableGeneratorId) & TABLE_ID_MASK) | |
| /** This macro returns the Table type from the TableGeneratorId. | |
| @param [in] TableGeneratorId The table generator ID. | |
| @return the Table type described by the TableGeneratorId. | |
| **/ | |
| #define GET_TABLE_TYPE(TableGeneratorId) \ | |
| (((TableGeneratorId) & TABLE_TYPE_MASK) >> TABLE_TYPE_BIT_SHIFT) | |
| /** This macro returns the Namespace ID from the TableGeneratorId. | |
| @param [in] TableGeneratorId The table generator ID. | |
| @return the Namespace described by the TableGeneratorId. | |
| **/ | |
| #define GET_TABLE_NAMESPACEID(TableGeneratorId) \ | |
| (((TableGeneratorId) & TABLE_NAMESPACEID_MASK) >> \ | |
| TABLE_NAMESPACE_ID_BIT_SHIFT) | |
| /** This macro checks if the TableGeneratorId is in the Standard Namespace. | |
| @param [in] TableGeneratorId The table generator ID. | |
| @return TRUE if the TableGeneratorId is in the Standard Namespace. | |
| **/ | |
| #define IS_GENERATOR_NAMESPACE_STD(TableGeneratorId) \ | |
| ( \ | |
| GET_TABLE_NAMESPACEID(TableGeneratorId) == \ | |
| ETableGeneratorNameSpaceStd \ | |
| ) | |
| /** This macro creates a TableGeneratorId | |
| @param [in] TableType The table type. | |
| @param [in] TableNameSpaceId The namespace ID for the table. | |
| @param [in] TableId The table ID. | |
| @return a TableGeneratorId calculated from the inputs. | |
| **/ | |
| #define CREATE_TABLE_GEN_ID(TableType, TableNameSpaceId, TableId) \ | |
| (((((TABLE_GENERATOR_ID)TableType) << TABLE_TYPE_BIT_SHIFT) & TABLE_TYPE_MASK) | \ | |
| ((((TABLE_GENERATOR_ID)TableNameSpaceId) << TABLE_NAMESPACE_ID_BIT_SHIFT) & \ | |
| TABLE_NAMESPACEID_MASK) | (((TABLE_GENERATOR_ID)TableId) & TABLE_ID_MASK)) | |
| /** Starting bit position for MAJOR revision | |
| */ | |
| #define MAJOR_REVISION_BIT_SHIFT 16 | |
| /** A mask for Major revision. | |
| */ | |
| #define MAJOR_REVISION_MASK 0xFFFF | |
| /** A mask for Minor revision. | |
| */ | |
| #define MINOR_REVISION_MASK 0xFFFF | |
| /** This macro generates a Major.Minor version | |
| where the Major and Minor fields are 16 bit. | |
| @param [in] Major The Major revision. | |
| @param [in] Minor The Minor revision. | |
| @return a 32 bit representation of the type Major.Minor. | |
| **/ | |
| #define CREATE_REVISION(Major, Minor) \ | |
| ((((Major) & MAJOR_REVISION_MASK) << MAJOR_REVISION_BIT_SHIFT) | \ | |
| ((Minor) & MINOR_REVISION_MASK)) | |
| /** This macro returns the Major revision | |
| Extracts Major from the 32 bit representation of the type Major.Minor | |
| @param [in] Revision The Revision value which is 32 bit. | |
| @return the Major part of the revision. | |
| **/ | |
| #define GET_MAJOR_REVISION(Revision) \ | |
| (((Revision) >> MAJOR_REVISION_BIT_SHIFT) & MAJOR_REVISION_MASK) | |
| /** This macro returns the Minor revision | |
| Extracts Minor from the 32 bit representation of the type Major.Minor | |
| @param [in] Revision The Revision value which is 32 bit. | |
| @return the Minor part of the revision. | |
| **/ | |
| #define GET_MINOR_REVISION(Revision) ((Revision) & MINOR_REVISION_MASK) | |
| #endif // TABLE_GENERATOR_H_ |