mirror of https://github.com/acidanthera/audk.git
DynamicTablesPkg: Table Generator definition
A Table generator is a component that implements the logic for building a firmware table. This is typically implemented as a library and registers itself with a table factory. Table generators are further classified based on type of table it generates, a namespace that signifies if the implementation is standard or an OEM specific implementation and a table Id. This patch introduces the definitions used for describing a table generator. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <alexei.fedorov@arm.com>
This commit is contained in:
parent
dacba2b271
commit
90c1ba92ef
|
@ -0,0 +1,24 @@
|
||||||
|
## @file
|
||||||
|
# dec file for Dynamic Tables Framework.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.<BR>
|
||||||
|
#
|
||||||
|
# This program and the accompanying materials are licensed and made available under
|
||||||
|
# the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
|
# The full text of the license may be found at
|
||||||
|
# http://opensource.org/licenses/bsd-license.php.
|
||||||
|
#
|
||||||
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
DEC_SPECIFICATION = 0x00010005
|
||||||
|
PACKAGE_NAME = DynamicTablesPkg
|
||||||
|
PACKAGE_GUID = 188EB346-8ABA-460E-A105-0F9D76F7324A
|
||||||
|
PACKAGE_VERSION = 1.0
|
||||||
|
|
||||||
|
[Includes]
|
||||||
|
Include
|
||||||
|
|
|
@ -0,0 +1,252 @@
|
||||||
|
/** @file
|
||||||
|
|
||||||
|
Copyright (c) 2017, ARM Limited. All rights reserved.
|
||||||
|
|
||||||
|
This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
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_
|
||||||
|
|
Loading…
Reference in New Issue