blob: 0d9ff9a1e3c2961b185761d3c44b7e75d0332038 [file] [log] [blame]
/** @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) \
((((TableType) << TABLE_TYPE_BIT_SHIFT) & TABLE_TYPE_MASK) | \
(((TableNameSpaceId) << TABLE_NAMESPACE_ID_BIT_SHIFT) & \
TABLE_NAMESPACEID_MASK) | ((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_