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