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