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