VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Include/TableGenerator.h@ 94368

Last change on this file since 94368 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 7.3 KB
Line 
1/** @file
2
3 Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 @par Glossary:
8 - ACPI - Advanced Configuration and Power Interface
9 - SMBIOS - System Management BIOS
10 - DT - Device Tree
11**/
12
13#ifndef TABLE_GENERATOR_H_
14#define TABLE_GENERATOR_H_
15
16/** The TABLE_GENERATOR_ID type describes the Table Generator ID
17
18 Table Generator ID
19
20_______________________________________________________________________________
21| 31 | 30 |29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17| 16|
22-------------------------------------------------------------------------------
23|TNSID| 0 | TT | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0| 0|
24_______________________________________________________________________________
25_______________________________________________________________________________
26|15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0|
27-------------------------------------------------------------------------------
28| Table ID |
29_______________________________________________________________________________
30
31 Bit [31] - Table NameSpace ID (TNSID)
32 0 - Standard
33 1 - Custom/OEM
34
35 Bit [30] - Reserved, Must be Zero
36
37 Bit [29:28] - Table Type (TT)
38 0 - ACPI Table
39 1 - SMBIOS Table
40 2 - DT (Device Tree) Table
41 3 - Reserved (INVALID)
42
43 Bit [27:16] - Reserved, Must Be Zero
44
45 Bit [15:0] - Table ID
46
47 Standard ACPI Table IDs:
48 0 - Reserved
49 1 - RAW
50 2 - FADT
51 3 - DSDT
52 4 - SSDT
53 5 - MADT
54 6 - GTDT
55 7 - DBG2
56 8 - SPCR
57 9 - MCFG
58 10 - PPTT
59
60 Standard SMBIOS Table IDs:
61 0 - Reserved
62 1 - RAW
63 2 - Table Type00
64 3 - Table Type01
65 4 - Table Type02
66 5 - Table Type03
67 6 - Table Type04
68 7 - Table Type05
69 8 - Table Type06
70 9 - Table Type07
71 10 - Table Type08
72 11 - Table Type09
73 12 - Table Type10
74 13 - Table Type11
75 14 - Table Type12
76 15 - Table Type13
77 16 - Table Type14
78 17 - Table Type15
79 18 - Table Type16
80 19 - Table Type17
81 20 - Table Type18
82 21 - Table Type19
83 22 - Table Type20
84 23 - Table Type21
85 24 - Table Type22
86 25 - Table Type23
87 26 - Table Type24
88 27 - Table Type25
89 28 - Table Type26
90 29 - Table Type27
91 30 - Table Type28
92 31 - Table Type29
93 32 - Table Type30
94 33 - Table Type31
95 34 - Table Type32
96 35 - Table Type33
97 36 - Table Type34
98 37 - Table Type35
99 38 - Table Type36
100 39 - Table Type37
101 40 - Table Type38
102 41 - Table Type39
103 42 - Table Type40
104 43 - Table Type41
105 44 - Table Type42
106 45-127 - Reserved
107 128 - Table Type126
108 129 - Table Type127
109**/
110typedef UINT32 TABLE_GENERATOR_ID;
111
112/** This enum lists the Table Generator Types.
113*/
114typedef enum TableGeneratorType {
115 ETableGeneratorTypeAcpi = 0, ///< ACPI Table Generator Type.
116 ETableGeneratorTypeSmbios, ///< SMBIOS Table Generator Type.
117 ETableGeneratorTypeDt, ///< Device Tree Table Generator Type.
118 ETableGeneratorTypeReserved
119} ETABLE_GENERATOR_TYPE;
120
121/** This enum lists the namespaces for the Table Generators.
122*/
123typedef enum TableGeneratorNameSpace {
124 ETableGeneratorNameSpaceStd = 0, ///< Standard Namespace.
125 ETableGeneratorNameSpaceOem ///< OEM Namespace.
126} ETABLE_GENERATOR_NAMESPACE;
127
128/** A mask for the Table ID bits of TABLE_GENERATOR_ID.
129*/
130#define TABLE_ID_MASK 0xFF
131
132/** A mask for the Namespace ID bits of TABLE_GENERATOR_ID.
133*/
134#define TABLE_NAMESPACEID_MASK (BIT31)
135
136/** A mask for the Table Type bits of TABLE_GENERATOR_ID.
137*/
138#define TABLE_TYPE_MASK (BIT29 | BIT28)
139
140/** Starting bit position for the Table Type bits
141*/
142#define TABLE_TYPE_BIT_SHIFT 28
143
144/** Starting bit position for the Table Namespace ID bit
145*/
146#define TABLE_NAMESPACE_ID_BIT_SHIFT 31
147
148/** This macro returns the Table ID from the TableGeneratorId.
149
150 @param [in] TableGeneratorId The table generator ID.
151
152 @return the Table ID described by the TableGeneratorId.
153**/
154#define GET_TABLE_ID(TableGeneratorId) \
155 ((TableGeneratorId) & TABLE_ID_MASK)
156
157/** This macro returns the Table type from the TableGeneratorId.
158
159 @param [in] TableGeneratorId The table generator ID.
160
161 @return the Table type described by the TableGeneratorId.
162**/
163#define GET_TABLE_TYPE(TableGeneratorId) \
164 (((TableGeneratorId) & TABLE_TYPE_MASK) >> TABLE_TYPE_BIT_SHIFT)
165
166/** This macro returns the Namespace ID from the TableGeneratorId.
167
168 @param [in] TableGeneratorId The table generator ID.
169
170 @return the Namespace described by the TableGeneratorId.
171**/
172#define GET_TABLE_NAMESPACEID(TableGeneratorId) \
173 (((TableGeneratorId) & TABLE_NAMESPACEID_MASK) >> \
174 TABLE_NAMESPACE_ID_BIT_SHIFT)
175
176/** This macro checks if the TableGeneratorId is in the Standard Namespace.
177
178 @param [in] TableGeneratorId The table generator ID.
179
180 @return TRUE if the TableGeneratorId is in the Standard Namespace.
181**/
182#define IS_GENERATOR_NAMESPACE_STD(TableGeneratorId) \
183 ( \
184 GET_TABLE_NAMESPACEID(TableGeneratorId) == \
185 ETableGeneratorNameSpaceStd \
186 )
187
188/** This macro creates a TableGeneratorId
189
190 @param [in] TableType The table type.
191 @param [in] TableNameSpaceId The namespace ID for the table.
192 @param [in] TableId The table ID.
193
194 @return a TableGeneratorId calculated from the inputs.
195**/
196#define CREATE_TABLE_GEN_ID(TableType, TableNameSpaceId, TableId) \
197 ((((TableType) << TABLE_TYPE_BIT_SHIFT) & TABLE_TYPE_MASK) | \
198 (((TableNameSpaceId) << TABLE_NAMESPACE_ID_BIT_SHIFT) & \
199 TABLE_NAMESPACEID_MASK) | ((TableId) & TABLE_ID_MASK))
200
201/** Starting bit position for MAJOR revision
202*/
203#define MAJOR_REVISION_BIT_SHIFT 16
204
205/** A mask for Major revision.
206*/
207#define MAJOR_REVISION_MASK 0xFFFF
208
209/** A mask for Minor revision.
210*/
211#define MINOR_REVISION_MASK 0xFFFF
212
213/** This macro generates a Major.Minor version
214 where the Major and Minor fields are 16 bit.
215
216 @param [in] Major The Major revision.
217 @param [in] Minor The Minor revision.
218
219 @return a 32 bit representation of the type Major.Minor.
220**/
221#define CREATE_REVISION(Major, Minor) \
222 ((((Major) & MAJOR_REVISION_MASK) << MAJOR_REVISION_BIT_SHIFT) | \
223 ((Minor) & MINOR_REVISION_MASK))
224
225/** This macro returns the Major revision
226
227 Extracts Major from the 32 bit representation of the type Major.Minor
228
229 @param [in] Revision The Revision value which is 32 bit.
230
231 @return the Major part of the revision.
232**/
233#define GET_MAJOR_REVISION(Revision) \
234 (((Revision) >> MAJOR_REVISION_BIT_SHIFT) & MAJOR_REVISION_MASK)
235
236/** This macro returns the Minor revision
237
238 Extracts Minor from the 32 bit representation of the type Major.Minor
239
240 @param [in] Revision The Revision value which is 32 bit.
241
242 @return the Minor part of the revision.
243**/
244#define GET_MINOR_REVISION(Revision) ((Revision) & MINOR_REVISION_MASK)
245
246#endif // TABLE_GENERATOR_H_
247
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette