]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/Acpi10.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi10.h
1 /** @file
2 ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
3
4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6 **/
7
8 #ifndef _ACPI_1_0_H_
9 #define _ACPI_1_0_H_
10
11 #include <IndustryStandard/AcpiAml.h>
12
13 ///
14 /// Common table header, this prefaces all ACPI tables, including FACS, but
15 /// excluding the RSD PTR structure.
16 ///
17 typedef struct {
18 UINT32 Signature;
19 UINT32 Length;
20 } EFI_ACPI_COMMON_HEADER;
21
22 #pragma pack(1)
23 ///
24 /// The common ACPI description table header. This structure prefaces most ACPI tables.
25 ///
26 typedef struct {
27 UINT32 Signature;
28 UINT32 Length;
29 UINT8 Revision;
30 UINT8 Checksum;
31 UINT8 OemId[6];
32 UINT64 OemTableId;
33 UINT32 OemRevision;
34 UINT32 CreatorId;
35 UINT32 CreatorRevision;
36 } EFI_ACPI_DESCRIPTION_HEADER;
37 #pragma pack()
38
39 //
40 // Define for Desriptor
41 //
42 #define ACPI_SMALL_ITEM_FLAG 0x00
43 #define ACPI_LARGE_ITEM_FLAG 0x01
44
45 //
46 // Small Item Descriptor Name
47 //
48 #define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04
49 #define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05
50 #define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06
51 #define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07
52 #define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08
53 #define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09
54 #define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E
55 #define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F
56
57 //
58 // Large Item Descriptor Name
59 //
60 #define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01
61 #define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04
62 #define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05
63 #define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06
64 #define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07
65 #define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08
66 #define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09
67 #define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A
68
69 //
70 // Small Item Descriptor Value
71 //
72 #define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22
73 #define ACPI_IRQ_DESCRIPTOR 0x23
74 #define ACPI_DMA_DESCRIPTOR 0x2A
75 #define ACPI_START_DEPENDENT_DESCRIPTOR 0x30
76 #define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31
77 #define ACPI_END_DEPENDENT_DESCRIPTOR 0x38
78 #define ACPI_IO_PORT_DESCRIPTOR 0x47
79 #define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B
80 #define ACPI_END_TAG_DESCRIPTOR 0x79
81
82 //
83 // Large Item Descriptor Value
84 //
85 #define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81
86 #define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85
87 #define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86
88 #define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87
89 #define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88
90 #define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89
91 #define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A
92 #define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A
93
94 //
95 // Resource Type
96 //
97 #define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00
98 #define ACPI_ADDRESS_SPACE_TYPE_IO 0x01
99 #define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02
100
101 ///
102 /// Power Management Timer frequency is fixed at 3.579545MHz.
103 ///
104 #define ACPI_TIMER_FREQUENCY 3579545
105
106 //
107 // Ensure proper structure formats
108 //
109 #pragma pack(1)
110
111 ///
112 /// The commond definition of QWORD, DWORD, and WORD
113 /// Address Space Descriptors.
114 ///
115 typedef PACKED struct {
116 UINT8 Desc;
117 UINT16 Len;
118 UINT8 ResType;
119 UINT8 GenFlag;
120 UINT8 SpecificFlag;
121 UINT64 AddrSpaceGranularity;
122 UINT64 AddrRangeMin;
123 UINT64 AddrRangeMax;
124 UINT64 AddrTranslationOffset;
125 UINT64 AddrLen;
126 } EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
127
128 typedef PACKED union {
129 UINT8 Byte;
130 PACKED struct {
131 UINT8 Length : 3;
132 UINT8 Name : 4;
133 UINT8 Type : 1;
134 } Bits;
135 } ACPI_SMALL_RESOURCE_HEADER;
136
137 typedef PACKED struct {
138 PACKED union {
139 UINT8 Byte;
140 PACKED struct {
141 UINT8 Name : 7;
142 UINT8 Type : 1;
143 }Bits;
144 } Header;
145 UINT16 Length;
146 } ACPI_LARGE_RESOURCE_HEADER;
147
148 ///
149 /// IRQ Descriptor.
150 ///
151 typedef PACKED struct {
152 ACPI_SMALL_RESOURCE_HEADER Header;
153 UINT16 Mask;
154 } EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;
155
156 ///
157 /// IRQ Descriptor.
158 ///
159 typedef PACKED struct {
160 ACPI_SMALL_RESOURCE_HEADER Header;
161 UINT16 Mask;
162 UINT8 Information;
163 } EFI_ACPI_IRQ_DESCRIPTOR;
164
165 ///
166 /// DMA Descriptor.
167 ///
168 typedef PACKED struct {
169 ACPI_SMALL_RESOURCE_HEADER Header;
170 UINT8 ChannelMask;
171 UINT8 Information;
172 } EFI_ACPI_DMA_DESCRIPTOR;
173
174 ///
175 /// I/O Port Descriptor
176 ///
177 typedef PACKED struct {
178 ACPI_SMALL_RESOURCE_HEADER Header;
179 UINT8 Information;
180 UINT16 BaseAddressMin;
181 UINT16 BaseAddressMax;
182 UINT8 Alignment;
183 UINT8 Length;
184 } EFI_ACPI_IO_PORT_DESCRIPTOR;
185
186 ///
187 /// Fixed Location I/O Port Descriptor.
188 ///
189 typedef PACKED struct {
190 ACPI_SMALL_RESOURCE_HEADER Header;
191 UINT16 BaseAddress;
192 UINT8 Length;
193 } EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;
194
195 ///
196 /// 24-Bit Memory Range Descriptor
197 ///
198 typedef PACKED struct {
199 ACPI_LARGE_RESOURCE_HEADER Header;
200 UINT8 Information;
201 UINT16 BaseAddressMin;
202 UINT16 BaseAddressMax;
203 UINT16 Alignment;
204 UINT16 Length;
205 } EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;
206
207 ///
208 /// 32-Bit Memory Range Descriptor
209 ///
210 typedef PACKED struct {
211 ACPI_LARGE_RESOURCE_HEADER Header;
212 UINT8 Information;
213 UINT32 BaseAddressMin;
214 UINT32 BaseAddressMax;
215 UINT32 Alignment;
216 UINT32 Length;
217 } EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;
218
219 ///
220 /// Fixed 32-Bit Fixed Memory Range Descriptor
221 ///
222 typedef PACKED struct {
223 ACPI_LARGE_RESOURCE_HEADER Header;
224 UINT8 Information;
225 UINT32 BaseAddress;
226 UINT32 Length;
227 } EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;
228
229 ///
230 /// QWORD Address Space Descriptor
231 ///
232 typedef PACKED struct {
233 ACPI_LARGE_RESOURCE_HEADER Header;
234 UINT8 ResType;
235 UINT8 GenFlag;
236 UINT8 SpecificFlag;
237 UINT64 AddrSpaceGranularity;
238 UINT64 AddrRangeMin;
239 UINT64 AddrRangeMax;
240 UINT64 AddrTranslationOffset;
241 UINT64 AddrLen;
242 } EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;
243
244 ///
245 /// DWORD Address Space Descriptor
246 ///
247 typedef PACKED struct {
248 ACPI_LARGE_RESOURCE_HEADER Header;
249 UINT8 ResType;
250 UINT8 GenFlag;
251 UINT8 SpecificFlag;
252 UINT32 AddrSpaceGranularity;
253 UINT32 AddrRangeMin;
254 UINT32 AddrRangeMax;
255 UINT32 AddrTranslationOffset;
256 UINT32 AddrLen;
257 } EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;
258
259 ///
260 /// WORD Address Space Descriptor
261 ///
262 typedef PACKED struct {
263 ACPI_LARGE_RESOURCE_HEADER Header;
264 UINT8 ResType;
265 UINT8 GenFlag;
266 UINT8 SpecificFlag;
267 UINT16 AddrSpaceGranularity;
268 UINT16 AddrRangeMin;
269 UINT16 AddrRangeMax;
270 UINT16 AddrTranslationOffset;
271 UINT16 AddrLen;
272 } EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;
273
274 ///
275 /// Extended Interrupt Descriptor
276 ///
277 typedef PACKED struct {
278 ACPI_LARGE_RESOURCE_HEADER Header;
279 UINT8 InterruptVectorFlags;
280 UINT8 InterruptTableLength;
281 UINT32 InterruptNumber[1];
282 } EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;
283
284 #pragma pack()
285
286 ///
287 /// The End tag identifies an end of resource data.
288 ///
289 typedef struct {
290 UINT8 Desc;
291 UINT8 Checksum;
292 } EFI_ACPI_END_TAG_DESCRIPTOR;
293
294 //
295 // General use definitions
296 //
297 #define EFI_ACPI_RESERVED_BYTE 0x00
298 #define EFI_ACPI_RESERVED_WORD 0x0000
299 #define EFI_ACPI_RESERVED_DWORD 0x00000000
300 #define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
301
302 //
303 // Resource Type Specific Flags
304 // Ref ACPI specification 6.4.3.5.5
305 //
306 // Bit [0] : Write Status, _RW
307 //
308 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0)
309 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0)
310 //
311 // Bit [2:1] : Memory Attributes, _MEM
312 //
313 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1)
314 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1)
315 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
316 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1)
317 //
318 // Bit [4:3] : Memory Attributes, _MTP
319 //
320 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3)
321 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3)
322 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3)
323 #define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3)
324 //
325 // Bit [5] : Memory to I/O Translation, _TTP
326 //
327 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)
328 #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)
329
330 //
331 // IRQ Information
332 // Ref ACPI specification 6.4.2.1
333 //
334 #define EFI_ACPI_IRQ_SHARABLE_MASK 0x10
335 #define EFI_ACPI_IRQ_SHARABLE 0x10
336
337 #define EFI_ACPI_IRQ_POLARITY_MASK 0x08
338 #define EFI_ACPI_IRQ_HIGH_TRUE 0x00
339 #define EFI_ACPI_IRQ_LOW_FALSE 0x08
340
341 #define EFI_ACPI_IRQ_MODE 0x01
342 #define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00
343 #define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01
344
345 //
346 // DMA Information
347 // Ref ACPI specification 6.4.2.2
348 //
349 #define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60
350 #define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00
351 #define EFI_ACPI_DMA_SPEED_TYPE_A 0x20
352 #define EFI_ACPI_DMA_SPEED_TYPE_B 0x40
353 #define EFI_ACPI_DMA_SPEED_TYPE_F 0x60
354
355 #define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04
356 #define EFI_ACPI_DMA_BUS_MASTER 0x04
357
358 #define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03
359 #define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00
360 #define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01
361 #define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x10
362
363 //
364 // IO Information
365 // Ref ACPI specification 6.4.2.5
366 //
367 #define EFI_ACPI_IO_DECODE_MASK 0x01
368 #define EFI_ACPI_IO_DECODE_16_BIT 0x01
369 #define EFI_ACPI_IO_DECODE_10_BIT 0x00
370
371 //
372 // Memory Information
373 // Ref ACPI specification 6.4.3.4
374 //
375 #define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01
376 #define EFI_ACPI_MEMORY_WRITABLE 0x01
377 #define EFI_ACPI_MEMORY_NON_WRITABLE 0x00
378
379 //
380 // Ensure proper structure formats
381 //
382 #pragma pack(1)
383 //
384 // ACPI 1.0b table structures
385 //
386
387 ///
388 /// Root System Description Pointer Structure.
389 ///
390 typedef struct {
391 UINT64 Signature;
392 UINT8 Checksum;
393 UINT8 OemId[6];
394 UINT8 Reserved;
395 UINT32 RsdtAddress;
396 } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
397
398 //
399 // Root System Description Table
400 // No definition needed as it is a common description table header, the same with
401 // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
402 //
403
404 ///
405 /// RSDT Revision (as defined in ACPI 1.0b specification).
406 ///
407 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
408
409 ///
410 /// Fixed ACPI Description Table Structure (FADT).
411 ///
412 typedef struct {
413 EFI_ACPI_DESCRIPTION_HEADER Header;
414 UINT32 FirmwareCtrl;
415 UINT32 Dsdt;
416 UINT8 IntModel;
417 UINT8 Reserved1;
418 UINT16 SciInt;
419 UINT32 SmiCmd;
420 UINT8 AcpiEnable;
421 UINT8 AcpiDisable;
422 UINT8 S4BiosReq;
423 UINT8 Reserved2;
424 UINT32 Pm1aEvtBlk;
425 UINT32 Pm1bEvtBlk;
426 UINT32 Pm1aCntBlk;
427 UINT32 Pm1bCntBlk;
428 UINT32 Pm2CntBlk;
429 UINT32 PmTmrBlk;
430 UINT32 Gpe0Blk;
431 UINT32 Gpe1Blk;
432 UINT8 Pm1EvtLen;
433 UINT8 Pm1CntLen;
434 UINT8 Pm2CntLen;
435 UINT8 PmTmLen;
436 UINT8 Gpe0BlkLen;
437 UINT8 Gpe1BlkLen;
438 UINT8 Gpe1Base;
439 UINT8 Reserved3;
440 UINT16 PLvl2Lat;
441 UINT16 PLvl3Lat;
442 UINT16 FlushSize;
443 UINT16 FlushStride;
444 UINT8 DutyOffset;
445 UINT8 DutyWidth;
446 UINT8 DayAlrm;
447 UINT8 MonAlrm;
448 UINT8 Century;
449 UINT8 Reserved4;
450 UINT8 Reserved5;
451 UINT8 Reserved6;
452 UINT32 Flags;
453 } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
454
455 ///
456 /// FADT Version (as defined in ACPI 1.0b specification).
457 ///
458 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01
459
460 #define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0
461 #define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1
462
463 //
464 // Fixed ACPI Description Table Fixed Feature Flags
465 // All other bits are reserved and must be set to 0.
466 //
467 #define EFI_ACPI_1_0_WBINVD BIT0
468 #define EFI_ACPI_1_0_WBINVD_FLUSH BIT1
469 #define EFI_ACPI_1_0_PROC_C1 BIT2
470 #define EFI_ACPI_1_0_P_LVL2_UP BIT3
471 #define EFI_ACPI_1_0_PWR_BUTTON BIT4
472 #define EFI_ACPI_1_0_SLP_BUTTON BIT5
473 #define EFI_ACPI_1_0_FIX_RTC BIT6
474 #define EFI_ACPI_1_0_RTC_S4 BIT7
475 #define EFI_ACPI_1_0_TMR_VAL_EXT BIT8
476 #define EFI_ACPI_1_0_DCK_CAP BIT9
477
478 ///
479 /// Firmware ACPI Control Structure.
480 ///
481 typedef struct {
482 UINT32 Signature;
483 UINT32 Length;
484 UINT32 HardwareSignature;
485 UINT32 FirmwareWakingVector;
486 UINT32 GlobalLock;
487 UINT32 Flags;
488 UINT8 Reserved[40];
489 } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
490
491 ///
492 /// Firmware Control Structure Feature Flags.
493 /// All other bits are reserved and must be set to 0.
494 ///
495 #define EFI_ACPI_1_0_S4BIOS_F BIT0
496
497 ///
498 /// Multiple APIC Description Table header definition. The rest of the table
499 /// must be defined in a platform-specific manner.
500 ///
501 typedef struct {
502 EFI_ACPI_DESCRIPTION_HEADER Header;
503 UINT32 LocalApicAddress;
504 UINT32 Flags;
505 } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
506
507 ///
508 /// MADT Revision (as defined in ACPI 1.0b specification).
509 ///
510 #define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
511
512 ///
513 /// Multiple APIC Flags
514 /// All other bits are reserved and must be set to 0.
515 ///
516 #define EFI_ACPI_1_0_PCAT_COMPAT BIT0
517
518 //
519 // Multiple APIC Description Table APIC structure types
520 // All other values between 0x05 an 0xFF are reserved and
521 // will be ignored by OSPM.
522 //
523 #define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00
524 #define EFI_ACPI_1_0_IO_APIC 0x01
525 #define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02
526 #define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03
527 #define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04
528
529 //
530 // APIC Structure Definitions
531 //
532
533 ///
534 /// Processor Local APIC Structure Definition.
535 ///
536 typedef struct {
537 UINT8 Type;
538 UINT8 Length;
539 UINT8 AcpiProcessorId;
540 UINT8 ApicId;
541 UINT32 Flags;
542 } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
543
544 ///
545 /// Local APIC Flags. All other bits are reserved and must be 0.
546 ///
547 #define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0
548
549 ///
550 /// IO APIC Structure.
551 ///
552 typedef struct {
553 UINT8 Type;
554 UINT8 Length;
555 UINT8 IoApicId;
556 UINT8 Reserved;
557 UINT32 IoApicAddress;
558 UINT32 SystemVectorBase;
559 } EFI_ACPI_1_0_IO_APIC_STRUCTURE;
560
561 ///
562 /// Interrupt Source Override Structure.
563 ///
564 typedef struct {
565 UINT8 Type;
566 UINT8 Length;
567 UINT8 Bus;
568 UINT8 Source;
569 UINT32 GlobalSystemInterruptVector;
570 UINT16 Flags;
571 } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
572
573 ///
574 /// Non-Maskable Interrupt Source Structure.
575 ///
576 typedef struct {
577 UINT8 Type;
578 UINT8 Length;
579 UINT16 Flags;
580 UINT32 GlobalSystemInterruptVector;
581 } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
582
583 ///
584 /// Local APIC NMI Structure.
585 ///
586 typedef struct {
587 UINT8 Type;
588 UINT8 Length;
589 UINT8 AcpiProcessorId;
590 UINT16 Flags;
591 UINT8 LocalApicInti;
592 } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
593
594 ///
595 /// Smart Battery Description Table (SBST)
596 ///
597 typedef struct {
598 EFI_ACPI_DESCRIPTION_HEADER Header;
599 UINT32 WarningEnergyLevel;
600 UINT32 LowEnergyLevel;
601 UINT32 CriticalEnergyLevel;
602 } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
603
604 //
605 // Known table signatures
606 //
607
608 ///
609 /// "RSD PTR " Root System Description Pointer.
610 ///
611 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
612
613 ///
614 /// "APIC" Multiple APIC Description Table.
615 ///
616 #define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')
617
618 ///
619 /// "DSDT" Differentiated System Description Table.
620 ///
621 #define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')
622
623 ///
624 /// "FACS" Firmware ACPI Control Structure.
625 ///
626 #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')
627
628 ///
629 /// "FACP" Fixed ACPI Description Table.
630 ///
631 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')
632
633 ///
634 /// "PSDT" Persistent System Description Table.
635 ///
636 #define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')
637
638 ///
639 /// "RSDT" Root System Description Table.
640 ///
641 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')
642
643 ///
644 /// "SBST" Smart Battery Specification Table.
645 ///
646 #define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')
647
648 ///
649 /// "SSDT" Secondary System Description Table.
650 ///
651 #define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')
652
653 #pragma pack()
654
655 #endif