]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/Acpi20.h
Fixed an issue which caused incorrect path generated when validating
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi20.h
1 /** @file
2 ACPI 2.0 definitions from the ACPI Specification, revision 2.0
3
4 Copyright (c) 2006 - 2008, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 **/
13
14 #ifndef _ACPI_2_0_H_
15 #define _ACPI_2_0_H_
16
17 #include <IndustryStandard/Acpi10.h>
18
19 //
20 // Ensure proper structure formats
21 //
22 #pragma pack(1)
23
24 ///
25 /// ACPI 2.0 Generic Address Space definition
26 ///
27 typedef struct {
28 UINT8 AddressSpaceId;
29 UINT8 RegisterBitWidth;
30 UINT8 RegisterBitOffset;
31 UINT8 Reserved;
32 UINT64 Address;
33 } EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE;
34
35 #pragma pack()
36
37 //
38 // Generic Address Space Address IDs
39 //
40 #define EFI_ACPI_2_0_SYSTEM_MEMORY 0
41 #define EFI_ACPI_2_0_SYSTEM_IO 1
42 #define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 2
43 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 3
44 #define EFI_ACPI_2_0_SMBUS 4
45 #define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F
46
47 //
48 // ACPI 2.0 table structures
49 //
50
51 ///
52 /// Root System Description Pointer Structure
53 ///
54 typedef struct {
55 UINT64 Signature;
56 UINT8 Checksum;
57 UINT8 OemId[6];
58 UINT8 Revision;
59 UINT32 RsdtAddress;
60 UINT32 Length;
61 UINT64 XsdtAddress;
62 UINT8 ExtendedChecksum;
63 UINT8 Reserved[3];
64 } EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
65
66 ///
67 /// RSD_PTR Revision (as defined in ACPI 2.0 spec.)
68 ///
69 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
70
71 ///
72 /// Common table header, this prefaces all ACPI tables, including FACS, but
73 /// excluding the RSD PTR structure
74 ///
75 typedef struct {
76 UINT32 Signature;
77 UINT32 Length;
78 } EFI_ACPI_2_0_COMMON_HEADER;
79
80 //
81 // Root System Description Table
82 // No definition needed as it is a common description table header, the same with
83 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
84 //
85
86 ///
87 /// RSDT Revision (as defined in ACPI 2.0 spec.)
88 ///
89 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
90
91 //
92 // Extended System Description Table
93 // No definition needed as it is a common description table header, the same with
94 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
95 //
96
97 ///
98 /// XSDT Revision (as defined in ACPI 2.0 spec.)
99 ///
100 #define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
101
102 ///
103 /// Fixed ACPI Description Table Structure (FADT)
104 ///
105 typedef struct {
106 EFI_ACPI_DESCRIPTION_HEADER Header;
107 UINT32 FirmwareCtrl;
108 UINT32 Dsdt;
109 UINT8 Reserved0;
110 UINT8 PreferredPmProfile;
111 UINT16 SciInt;
112 UINT32 SmiCmd;
113 UINT8 AcpiEnable;
114 UINT8 AcpiDisable;
115 UINT8 S4BiosReq;
116 UINT8 PstateCnt;
117 UINT32 Pm1aEvtBlk;
118 UINT32 Pm1bEvtBlk;
119 UINT32 Pm1aCntBlk;
120 UINT32 Pm1bCntBlk;
121 UINT32 Pm2CntBlk;
122 UINT32 PmTmrBlk;
123 UINT32 Gpe0Blk;
124 UINT32 Gpe1Blk;
125 UINT8 Pm1EvtLen;
126 UINT8 Pm1CntLen;
127 UINT8 Pm2CntLen;
128 UINT8 PmTmrLen;
129 UINT8 Gpe0BlkLen;
130 UINT8 Gpe1BlkLen;
131 UINT8 Gpe1Base;
132 UINT8 CstCnt;
133 UINT16 PLvl2Lat;
134 UINT16 PLvl3Lat;
135 UINT16 FlushSize;
136 UINT16 FlushStride;
137 UINT8 DutyOffset;
138 UINT8 DutyWidth;
139 UINT8 DayAlrm;
140 UINT8 MonAlrm;
141 UINT8 Century;
142 UINT16 IaPcBootArch;
143 UINT8 Reserved1;
144 UINT32 Flags;
145 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg;
146 UINT8 ResetValue;
147 UINT8 Reserved2[3];
148 UINT64 XFirmwareCtrl;
149 UINT64 XDsdt;
150 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;
151 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;
152 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;
153 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;
154 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;
155 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;
156 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;
157 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;
158 } EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE;
159
160 ///
161 /// FADT Version (as defined in ACPI 2.0 spec.)
162 ///
163 #define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03
164
165 //
166 // Fixed ACPI Description Table Boot Architecture Flags
167 // All other bits are reserved and must be set to 0.
168 //
169 #define EFI_ACPI_2_0_LEGACY_DEVICES BIT0
170 #define EFI_ACPI_2_0_8042 BIT1
171
172 //
173 // Fixed ACPI Description Table Fixed Feature Flags
174 // All other bits are reserved and must be set to 0.
175 //
176 #define EFI_ACPI_2_0_WBINVD BIT0
177 #define EFI_ACPI_2_0_WBINVD_FLUSH BIT1
178 #define EFI_ACPI_2_0_PROC_C1 BIT2
179 #define EFI_ACPI_2_0_P_LVL2_UP BIT3
180 #define EFI_ACPI_2_0_PWR_BUTTON BIT4
181 #define EFI_ACPI_2_0_SLP_BUTTON BIT5
182 #define EFI_ACPI_2_0_FIX_RTC BIT6
183 #define EFI_ACPI_2_0_RTC_S4 BIT7
184 #define EFI_ACPI_2_0_TMR_VAL_EXT BIT8
185 #define EFI_ACPI_2_0_DCK_CAP BIT9
186 #define EFI_ACPI_2_0_RESET_REG_SUP BIT10
187 #define EFI_ACPI_2_0_SEALED_CASE BIT11
188 #define EFI_ACPI_2_0_HEADLESS BIT12
189 #define EFI_ACPI_2_0_CPU_SW_SLP BIT13
190
191 ///
192 /// Firmware ACPI Control Structure
193 ///
194 typedef struct {
195 UINT32 Signature;
196 UINT32 Length;
197 UINT32 HardwareSignature;
198 UINT32 FirmwareWakingVector;
199 UINT32 GlobalLock;
200 UINT32 Flags;
201 UINT64 XFirmwareWakingVector;
202 UINT8 Version;
203 UINT8 Reserved[31];
204 } EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
205
206 ///
207 /// FACS Version (as defined in ACPI 2.0 spec.)
208 ///
209 #define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01
210
211 ///
212 /// Firmware Control Structure Feature Flags
213 /// All other bits are reserved and must be set to 0.
214 ///
215 #define EFI_ACPI_2_0_S4BIOS_F BIT0
216
217 ///
218 /// Multiple APIC Description Table header definition. The rest of the table
219 /// must be defined in a platform specific manner.
220 ///
221 typedef struct {
222 EFI_ACPI_DESCRIPTION_HEADER Header;
223 UINT32 LocalApicAddress;
224 UINT32 Flags;
225 } EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
226
227 ///
228 /// MADT Revision (as defined in ACPI 2.0 spec.)
229 ///
230 #define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
231
232 ///
233 /// Multiple APIC Flags
234 /// All other bits are reserved and must be set to 0.
235 ///
236 #define EFI_ACPI_2_0_PCAT_COMPAT BIT0
237
238 //
239 // Multiple APIC Description Table APIC structure types
240 // All other values between 0x09 an 0xFF are reserved and
241 // will be ignored by OSPM.
242 //
243 #define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00
244 #define EFI_ACPI_2_0_IO_APIC 0x01
245 #define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02
246 #define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
247 #define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04
248 #define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05
249 #define EFI_ACPI_2_0_IO_SAPIC 0x06
250 #define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07
251 #define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08
252
253 //
254 // APIC Structure Definitions
255 //
256
257 ///
258 /// Processor Local APIC Structure Definition
259 ///
260 typedef struct {
261 UINT8 Type;
262 UINT8 Length;
263 UINT8 AcpiProcessorId;
264 UINT8 ApicId;
265 UINT32 Flags;
266 } EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
267
268 ///
269 /// Local APIC Flags. All other bits are reserved and must be 0.
270 ///
271 #define EFI_ACPI_2_0_LOCAL_APIC_ENABLED BIT0
272
273 ///
274 /// IO APIC Structure
275 ///
276 typedef struct {
277 UINT8 Type;
278 UINT8 Length;
279 UINT8 IoApicId;
280 UINT8 Reserved;
281 UINT32 IoApicAddress;
282 UINT32 GlobalSystemInterruptBase;
283 } EFI_ACPI_2_0_IO_APIC_STRUCTURE;
284
285 ///
286 /// Interrupt Source Override Structure
287 ///
288 typedef struct {
289 UINT8 Type;
290 UINT8 Length;
291 UINT8 Bus;
292 UINT8 Source;
293 UINT32 GlobalSystemInterrupt;
294 UINT16 Flags;
295 } EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
296
297 ///
298 /// Non-Maskable Interrupt Source Structure
299 ///
300 typedef struct {
301 UINT8 Type;
302 UINT8 Length;
303 UINT16 Flags;
304 UINT32 GlobalSystemInterrupt;
305 } EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
306
307 //
308 // Ensure proper structure formats
309 //
310 #pragma pack(1)
311
312 ///
313 /// Local APIC NMI Structure
314 ///
315 typedef struct {
316 UINT8 Type;
317 UINT8 Length;
318 UINT8 AcpiProcessorId;
319 UINT16 Flags;
320 UINT8 LocalApicLint;
321 } EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE;
322
323 ///
324 /// Local APIC Address Override Structure
325 ///
326 typedef struct {
327 UINT8 Type;
328 UINT8 Length;
329 UINT16 Reserved;
330 UINT64 LocalApicAddress;
331 } EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
332
333 #pragma pack()
334
335 ///
336 /// IO SAPIC Structure
337 ///
338 typedef struct {
339 UINT8 Type;
340 UINT8 Length;
341 UINT8 IoApicId;
342 UINT8 Reserved;
343 UINT32 GlobalSystemInterruptBase;
344 UINT64 IoSapicAddress;
345 } EFI_ACPI_2_0_IO_SAPIC_STRUCTURE;
346
347 ///
348 /// Local SAPIC Structure
349 ///
350 typedef struct {
351 UINT8 Type;
352 UINT8 Length;
353 UINT8 AcpiProcessorId;
354 UINT8 LocalSapicId;
355 UINT8 LocalSapicEid;
356 UINT8 Reserved[3];
357 UINT32 Flags;
358 } EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
359
360 ///
361 /// Platform Interrupt Sources Structure
362 ///
363 typedef struct {
364 UINT8 Type;
365 UINT8 Length;
366 UINT16 Flags;
367 UINT8 InterruptType;
368 UINT8 ProcessorId;
369 UINT8 ProcessorEid;
370 UINT8 IoSapicVector;
371 UINT32 GlobalSystemInterrupt;
372 UINT32 Reserved;
373 } EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
374
375 ///
376 /// Smart Battery Description Table (SBST)
377 ///
378 typedef struct {
379 EFI_ACPI_DESCRIPTION_HEADER Header;
380 UINT32 WarningEnergyLevel;
381 UINT32 LowEnergyLevel;
382 UINT32 CriticalEnergyLevel;
383 } EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE;
384
385 ///
386 /// SBST Version (as defined in ACPI 2.0 spec.)
387 ///
388 #define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
389
390 ///
391 /// Embedded Controller Boot Resources Table (ECDT)
392 /// The table is followed by a null terminated ASCII string that contains
393 /// a fully qualified reference to the name space object.
394 ///
395 typedef struct {
396 EFI_ACPI_DESCRIPTION_HEADER Header;
397 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl;
398 EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData;
399 UINT32 Uid;
400 UINT8 GpeBit;
401 } EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
402
403 ///
404 /// ECDT Version (as defined in ACPI 2.0 spec.)
405 ///
406 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01
407
408 //
409 // Known table signatures
410 //
411
412 ///
413 /// "RSD PTR " Root System Description Pointer
414 ///
415 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
416
417 ///
418 /// "SPIC" Multiple SAPIC Description Table
419 ///
420 /// BUGBUG: Don't know where this came from except SR870BN4 uses it.
421 /// #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053
422 ///
423 #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'I', 'C')
424
425 ///
426 /// "BOOT" MS Simple Boot Spec
427 ///
428 #define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')
429
430 ///
431 /// "DBGP" MS Bebug Port Spec
432 ///
433 #define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')
434
435 ///
436 /// "DSDT" Differentiated System Description Table
437 ///
438 #define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
439
440 ///
441 /// "ECDT" Embedded Controller Boot Resources Table
442 ///
443 #define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')
444
445 ///
446 /// "ETDT" Event Timer Description Table
447 ///
448 #define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')
449
450 ///
451 /// "FACS" Firmware ACPI Control Structure
452 ///
453 #define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
454
455 ///
456 /// "FACP" Fixed ACPI Description Table
457 ///
458 #define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
459
460 ///
461 /// "APIC" Multiple APIC Description Table
462 ///
463 #define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
464
465 ///
466 /// "PSDT" Persistent System Description Table
467 ///
468 #define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
469
470 ///
471 /// "RSDT" Root System Description Table
472 ///
473 #define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
474
475 ///
476 /// "SBST" Smart Battery Specification Table
477 ///
478 #define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
479
480 ///
481 /// "SLIT" System Locality Information Table
482 ///
483 #define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')
484
485 ///
486 /// "SPCR" Serial Port Concole Redirection Table
487 ///
488 #define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')
489
490 ///
491 /// "SRAT" Static Resource Affinity Table
492 ///
493 #define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')
494
495 ///
496 /// "SSDT" Secondary System Description Table
497 ///
498 #define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
499
500 ///
501 /// "SPMI" Server Platform Management Interface Table
502 ///
503 #define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')
504
505 ///
506 /// "XSDT" Extended System Description Table
507 ///
508 #define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')
509
510 ///
511 /// "MCFG" Static Resource Affinity Table
512 ///
513 #define EFI_ACPI_2_0_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')
514
515 #endif