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 664