1314879Simp/** @file 2314879Simp ACPI 1.0b definitions from the ACPI Specification, revision 1.0b 3314879Simp 4314879SimpCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 5314879SimpThis program and the accompanying materials are licensed and made available under 6314879Simpthe terms and conditions of the BSD License that accompanies this distribution. 7314879SimpThe full text of the license may be found at 8314879Simphttp://opensource.org/licenses/bsd-license.php. 9314879Simp 10314879SimpTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11314879SimpWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12314879Simp**/ 13314879Simp 14314879Simp#ifndef _ACPI_1_0_H_ 15314879Simp#define _ACPI_1_0_H_ 16314879Simp 17314879Simp#include <IndustryStandard/AcpiAml.h> 18314879Simp 19314879Simp/// 20314879Simp/// Common table header, this prefaces all ACPI tables, including FACS, but 21314879Simp/// excluding the RSD PTR structure. 22314879Simp/// 23314879Simptypedef struct { 24314879Simp UINT32 Signature; 25314879Simp UINT32 Length; 26314879Simp} EFI_ACPI_COMMON_HEADER; 27314879Simp 28314879Simp#pragma pack(1) 29314879Simp/// 30314879Simp/// The common ACPI description table header. This structure prefaces most ACPI tables. 31314879Simp/// 32314879Simptypedef struct { 33314879Simp UINT32 Signature; 34314879Simp UINT32 Length; 35314879Simp UINT8 Revision; 36314879Simp UINT8 Checksum; 37314879Simp UINT8 OemId[6]; 38314879Simp UINT64 OemTableId; 39314879Simp UINT32 OemRevision; 40314879Simp UINT32 CreatorId; 41314879Simp UINT32 CreatorRevision; 42314879Simp} EFI_ACPI_DESCRIPTION_HEADER; 43314879Simp#pragma pack() 44314879Simp 45314879Simp// 46314879Simp// Define for Desriptor 47314879Simp// 48314879Simp#define ACPI_SMALL_ITEM_FLAG 0x00 49314879Simp#define ACPI_LARGE_ITEM_FLAG 0x01 50314879Simp 51314879Simp// 52314879Simp// Small Item Descriptor Name 53314879Simp// 54314879Simp#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04 55314879Simp#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05 56314879Simp#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06 57314879Simp#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07 58314879Simp#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08 59314879Simp#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09 60314879Simp#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E 61314879Simp#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F 62314879Simp 63314879Simp// 64314879Simp// Large Item Descriptor Name 65314879Simp// 66314879Simp#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01 67314879Simp#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04 68314879Simp#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05 69314879Simp#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06 70314879Simp#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07 71314879Simp#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08 72314879Simp#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09 73314879Simp#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A 74314879Simp 75314879Simp// 76314879Simp// Small Item Descriptor Value 77314879Simp// 78314879Simp#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22 79314879Simp#define ACPI_IRQ_DESCRIPTOR 0x23 80314879Simp#define ACPI_DMA_DESCRIPTOR 0x2A 81314879Simp#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30 82314879Simp#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31 83314879Simp#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38 84314879Simp#define ACPI_IO_PORT_DESCRIPTOR 0x47 85314879Simp#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B 86314879Simp#define ACPI_END_TAG_DESCRIPTOR 0x79 87314879Simp 88314879Simp// 89314879Simp// Large Item Descriptor Value 90314879Simp// 91314879Simp#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81 92314879Simp#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85 93314879Simp#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86 94314879Simp#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87 95314879Simp#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88 96314879Simp#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89 97314879Simp#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A 98314879Simp#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A 99314879Simp 100314879Simp// 101314879Simp// Resource Type 102314879Simp// 103314879Simp#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00 104314879Simp#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01 105314879Simp#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02 106314879Simp 107314879Simp/// 108314879Simp/// Power Management Timer frequency is fixed at 3.579545MHz. 109314879Simp/// 110314879Simp#define ACPI_TIMER_FREQUENCY 3579545 111314879Simp 112314879Simp// 113314879Simp// Ensure proper structure formats 114314879Simp// 115314879Simp#pragma pack(1) 116314879Simp 117314879Simp/// 118314879Simp/// The commond definition of QWORD, DWORD, and WORD 119314879Simp/// Address Space Descriptors. 120314879Simp/// 121314879Simptypedef PACKED struct { 122314879Simp UINT8 Desc; 123314879Simp UINT16 Len; 124314879Simp UINT8 ResType; 125314879Simp UINT8 GenFlag; 126314879Simp UINT8 SpecificFlag; 127314879Simp UINT64 AddrSpaceGranularity; 128314879Simp UINT64 AddrRangeMin; 129314879Simp UINT64 AddrRangeMax; 130314879Simp UINT64 AddrTranslationOffset; 131314879Simp UINT64 AddrLen; 132314879Simp} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR; 133314879Simp 134314879Simptypedef PACKED union { 135314879Simp UINT8 Byte; 136314879Simp PACKED struct { 137314879Simp UINT8 Length : 3; 138314879Simp UINT8 Name : 4; 139314879Simp UINT8 Type : 1; 140314879Simp } Bits; 141314879Simp} ACPI_SMALL_RESOURCE_HEADER; 142314879Simp 143314879Simptypedef PACKED struct { 144314879Simp PACKED union { 145314879Simp UINT8 Byte; 146314879Simp PACKED struct { 147314879Simp UINT8 Name : 7; 148314879Simp UINT8 Type : 1; 149314879Simp }Bits; 150314879Simp } Header; 151314879Simp UINT16 Length; 152314879Simp} ACPI_LARGE_RESOURCE_HEADER; 153314879Simp 154314879Simp/// 155314879Simp/// IRQ Descriptor. 156314879Simp/// 157314879Simptypedef PACKED struct { 158314879Simp ACPI_SMALL_RESOURCE_HEADER Header; 159314879Simp UINT16 Mask; 160314879Simp} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR; 161314879Simp 162314879Simp/// 163314879Simp/// IRQ Descriptor. 164314879Simp/// 165314879Simptypedef PACKED struct { 166314879Simp ACPI_SMALL_RESOURCE_HEADER Header; 167314879Simp UINT16 Mask; 168314879Simp UINT8 Information; 169314879Simp} EFI_ACPI_IRQ_DESCRIPTOR; 170314879Simp 171314879Simp/// 172314879Simp/// DMA Descriptor. 173314879Simp/// 174314879Simptypedef PACKED struct { 175314879Simp ACPI_SMALL_RESOURCE_HEADER Header; 176314879Simp UINT8 ChannelMask; 177314879Simp UINT8 Information; 178314879Simp} EFI_ACPI_DMA_DESCRIPTOR; 179314879Simp 180314879Simp/// 181314879Simp/// I/O Port Descriptor 182314879Simp/// 183314879Simptypedef PACKED struct { 184314879Simp ACPI_SMALL_RESOURCE_HEADER Header; 185314879Simp UINT8 Information; 186314879Simp UINT16 BaseAddressMin; 187314879Simp UINT16 BaseAddressMax; 188314879Simp UINT8 Alignment; 189314879Simp UINT8 Length; 190314879Simp} EFI_ACPI_IO_PORT_DESCRIPTOR; 191314879Simp 192314879Simp/// 193314879Simp/// Fixed Location I/O Port Descriptor. 194314879Simp/// 195314879Simptypedef PACKED struct { 196314879Simp ACPI_SMALL_RESOURCE_HEADER Header; 197314879Simp UINT16 BaseAddress; 198314879Simp UINT8 Length; 199314879Simp} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR; 200314879Simp 201314879Simp/// 202314879Simp/// 24-Bit Memory Range Descriptor 203314879Simp/// 204314879Simptypedef PACKED struct { 205314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 206314879Simp UINT8 Information; 207314879Simp UINT16 BaseAddressMin; 208314879Simp UINT16 BaseAddressMax; 209314879Simp UINT16 Alignment; 210314879Simp UINT16 Length; 211314879Simp} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR; 212314879Simp 213314879Simp/// 214314879Simp/// 32-Bit Memory Range Descriptor 215314879Simp/// 216314879Simptypedef PACKED struct { 217314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 218314879Simp UINT8 Information; 219314879Simp UINT32 BaseAddressMin; 220314879Simp UINT32 BaseAddressMax; 221314879Simp UINT32 Alignment; 222314879Simp UINT32 Length; 223314879Simp} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR; 224314879Simp 225314879Simp/// 226314879Simp/// Fixed 32-Bit Fixed Memory Range Descriptor 227314879Simp/// 228314879Simptypedef PACKED struct { 229314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 230314879Simp UINT8 Information; 231314879Simp UINT32 BaseAddress; 232314879Simp UINT32 Length; 233314879Simp} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR; 234314879Simp 235314879Simp/// 236314879Simp/// QWORD Address Space Descriptor 237314879Simp/// 238314879Simptypedef PACKED struct { 239314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 240314879Simp UINT8 ResType; 241314879Simp UINT8 GenFlag; 242314879Simp UINT8 SpecificFlag; 243314879Simp UINT64 AddrSpaceGranularity; 244314879Simp UINT64 AddrRangeMin; 245314879Simp UINT64 AddrRangeMax; 246314879Simp UINT64 AddrTranslationOffset; 247314879Simp UINT64 AddrLen; 248314879Simp} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR; 249314879Simp 250314879Simp/// 251314879Simp/// DWORD Address Space Descriptor 252314879Simp/// 253314879Simptypedef PACKED struct { 254314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 255314879Simp UINT8 ResType; 256314879Simp UINT8 GenFlag; 257314879Simp UINT8 SpecificFlag; 258314879Simp UINT32 AddrSpaceGranularity; 259314879Simp UINT32 AddrRangeMin; 260314879Simp UINT32 AddrRangeMax; 261314879Simp UINT32 AddrTranslationOffset; 262314879Simp UINT32 AddrLen; 263314879Simp} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR; 264314879Simp 265314879Simp/// 266314879Simp/// WORD Address Space Descriptor 267314879Simp/// 268314879Simptypedef PACKED struct { 269314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 270314879Simp UINT8 ResType; 271314879Simp UINT8 GenFlag; 272314879Simp UINT8 SpecificFlag; 273314879Simp UINT16 AddrSpaceGranularity; 274314879Simp UINT16 AddrRangeMin; 275314879Simp UINT16 AddrRangeMax; 276314879Simp UINT16 AddrTranslationOffset; 277314879Simp UINT16 AddrLen; 278314879Simp} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR; 279314879Simp 280314879Simp/// 281314879Simp/// Extended Interrupt Descriptor 282314879Simp/// 283314879Simptypedef PACKED struct { 284314879Simp ACPI_LARGE_RESOURCE_HEADER Header; 285314879Simp UINT8 InterruptVectorFlags; 286314879Simp UINT8 InterruptTableLength; 287314879Simp UINT32 InterruptNumber[1]; 288314879Simp} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR; 289314879Simp 290314879Simp#pragma pack() 291314879Simp 292314879Simp/// 293314879Simp/// The End tag identifies an end of resource data. 294314879Simp/// 295314879Simptypedef struct { 296314879Simp UINT8 Desc; 297314879Simp UINT8 Checksum; 298314879Simp} EFI_ACPI_END_TAG_DESCRIPTOR; 299314879Simp 300314879Simp// 301314879Simp// General use definitions 302314879Simp// 303314879Simp#define EFI_ACPI_RESERVED_BYTE 0x00 304314879Simp#define EFI_ACPI_RESERVED_WORD 0x0000 305314879Simp#define EFI_ACPI_RESERVED_DWORD 0x00000000 306314879Simp#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000 307314879Simp 308314879Simp// 309314879Simp// Resource Type Specific Flags 310314879Simp// Ref ACPI specification 6.4.3.5.5 311314879Simp// 312314879Simp// Bit [0] : Write Status, _RW 313314879Simp// 314314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0) 315314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0) 316314879Simp// 317314879Simp// Bit [2:1] : Memory Attributes, _MEM 318314879Simp// 319314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1) 320314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1) 321314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1) 322314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1) 323314879Simp// 324314879Simp// Bit [4:3] : Memory Attributes, _MTP 325314879Simp// 326314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3) 327314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3) 328314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3) 329314879Simp#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3) 330314879Simp// 331314879Simp// Bit [5] : Memory to I/O Translation, _TTP 332314879Simp// 333314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5) 334314879Simp#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5) 335314879Simp 336314879Simp// 337314879Simp// IRQ Information 338314879Simp// Ref ACPI specification 6.4.2.1 339314879Simp// 340314879Simp#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10 341314879Simp#define EFI_ACPI_IRQ_SHARABLE 0x10 342314879Simp 343314879Simp#define EFI_ACPI_IRQ_POLARITY_MASK 0x08 344314879Simp#define EFI_ACPI_IRQ_HIGH_TRUE 0x00 345314879Simp#define EFI_ACPI_IRQ_LOW_FALSE 0x08 346314879Simp 347314879Simp#define EFI_ACPI_IRQ_MODE 0x01 348314879Simp#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00 349314879Simp#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01 350314879Simp 351314879Simp// 352314879Simp// DMA Information 353314879Simp// Ref ACPI specification 6.4.2.2 354314879Simp// 355314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60 356314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 357314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20 358314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40 359314879Simp#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60 360314879Simp 361314879Simp#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04 362314879Simp#define EFI_ACPI_DMA_BUS_MASTER 0x04 363314879Simp 364314879Simp#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03 365314879Simp#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00 366314879Simp#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01 367314879Simp#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x10 368314879Simp 369314879Simp// 370314879Simp// IO Information 371314879Simp// Ref ACPI specification 6.4.2.5 372314879Simp// 373314879Simp#define EFI_ACPI_IO_DECODE_MASK 0x01 374314879Simp#define EFI_ACPI_IO_DECODE_16_BIT 0x01 375314879Simp#define EFI_ACPI_IO_DECODE_10_BIT 0x00 376314879Simp 377314879Simp// 378314879Simp// Memory Information 379314879Simp// Ref ACPI specification 6.4.3.4 380314879Simp// 381314879Simp#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01 382314879Simp#define EFI_ACPI_MEMORY_WRITABLE 0x01 383314879Simp#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00 384314879Simp 385314879Simp// 386314879Simp// Ensure proper structure formats 387314879Simp// 388314879Simp#pragma pack(1) 389314879Simp// 390314879Simp// ACPI 1.0b table structures 391314879Simp// 392314879Simp 393314879Simp/// 394314879Simp/// Root System Description Pointer Structure. 395314879Simp/// 396314879Simptypedef struct { 397314879Simp UINT64 Signature; 398314879Simp UINT8 Checksum; 399314879Simp UINT8 OemId[6]; 400314879Simp UINT8 Reserved; 401314879Simp UINT32 RsdtAddress; 402314879Simp} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER; 403314879Simp 404314879Simp// 405314879Simp// Root System Description Table 406314879Simp// No definition needed as it is a common description table header, the same with 407314879Simp// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 408314879Simp// 409314879Simp 410314879Simp/// 411314879Simp/// RSDT Revision (as defined in ACPI 1.0b specification). 412314879Simp/// 413314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 414314879Simp 415314879Simp/// 416314879Simp/// Fixed ACPI Description Table Structure (FADT). 417314879Simp/// 418314879Simptypedef struct { 419314879Simp EFI_ACPI_DESCRIPTION_HEADER Header; 420314879Simp UINT32 FirmwareCtrl; 421314879Simp UINT32 Dsdt; 422314879Simp UINT8 IntModel; 423314879Simp UINT8 Reserved1; 424314879Simp UINT16 SciInt; 425314879Simp UINT32 SmiCmd; 426314879Simp UINT8 AcpiEnable; 427314879Simp UINT8 AcpiDisable; 428314879Simp UINT8 S4BiosReq; 429314879Simp UINT8 Reserved2; 430314879Simp UINT32 Pm1aEvtBlk; 431314879Simp UINT32 Pm1bEvtBlk; 432314879Simp UINT32 Pm1aCntBlk; 433314879Simp UINT32 Pm1bCntBlk; 434314879Simp UINT32 Pm2CntBlk; 435314879Simp UINT32 PmTmrBlk; 436314879Simp UINT32 Gpe0Blk; 437314879Simp UINT32 Gpe1Blk; 438314879Simp UINT8 Pm1EvtLen; 439314879Simp UINT8 Pm1CntLen; 440314879Simp UINT8 Pm2CntLen; 441314879Simp UINT8 PmTmLen; 442314879Simp UINT8 Gpe0BlkLen; 443314879Simp UINT8 Gpe1BlkLen; 444314879Simp UINT8 Gpe1Base; 445314879Simp UINT8 Reserved3; 446314879Simp UINT16 PLvl2Lat; 447314879Simp UINT16 PLvl3Lat; 448314879Simp UINT16 FlushSize; 449314879Simp UINT16 FlushStride; 450314879Simp UINT8 DutyOffset; 451314879Simp UINT8 DutyWidth; 452314879Simp UINT8 DayAlrm; 453314879Simp UINT8 MonAlrm; 454314879Simp UINT8 Century; 455314879Simp UINT8 Reserved4; 456314879Simp UINT8 Reserved5; 457314879Simp UINT8 Reserved6; 458314879Simp UINT32 Flags; 459314879Simp} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE; 460314879Simp 461314879Simp/// 462314879Simp/// FADT Version (as defined in ACPI 1.0b specification). 463314879Simp/// 464314879Simp#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01 465314879Simp 466314879Simp#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0 467314879Simp#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1 468314879Simp 469314879Simp// 470314879Simp// Fixed ACPI Description Table Fixed Feature Flags 471314879Simp// All other bits are reserved and must be set to 0. 472314879Simp// 473314879Simp#define EFI_ACPI_1_0_WBINVD BIT0 474314879Simp#define EFI_ACPI_1_0_WBINVD_FLUSH BIT1 475314879Simp#define EFI_ACPI_1_0_PROC_C1 BIT2 476314879Simp#define EFI_ACPI_1_0_P_LVL2_UP BIT3 477314879Simp#define EFI_ACPI_1_0_PWR_BUTTON BIT4 478314879Simp#define EFI_ACPI_1_0_SLP_BUTTON BIT5 479314879Simp#define EFI_ACPI_1_0_FIX_RTC BIT6 480314879Simp#define EFI_ACPI_1_0_RTC_S4 BIT7 481314879Simp#define EFI_ACPI_1_0_TMR_VAL_EXT BIT8 482314879Simp#define EFI_ACPI_1_0_DCK_CAP BIT9 483314879Simp 484314879Simp/// 485314879Simp/// Firmware ACPI Control Structure. 486314879Simp/// 487314879Simptypedef struct { 488314879Simp UINT32 Signature; 489314879Simp UINT32 Length; 490314879Simp UINT32 HardwareSignature; 491314879Simp UINT32 FirmwareWakingVector; 492314879Simp UINT32 GlobalLock; 493314879Simp UINT32 Flags; 494314879Simp UINT8 Reserved[40]; 495314879Simp} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; 496314879Simp 497314879Simp/// 498314879Simp/// Firmware Control Structure Feature Flags. 499314879Simp/// All other bits are reserved and must be set to 0. 500314879Simp/// 501314879Simp#define EFI_ACPI_1_0_S4BIOS_F BIT0 502314879Simp 503314879Simp/// 504314879Simp/// Multiple APIC Description Table header definition. The rest of the table 505314879Simp/// must be defined in a platform-specific manner. 506314879Simp/// 507314879Simptypedef struct { 508314879Simp EFI_ACPI_DESCRIPTION_HEADER Header; 509314879Simp UINT32 LocalApicAddress; 510314879Simp UINT32 Flags; 511314879Simp} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 512314879Simp 513314879Simp/// 514314879Simp/// MADT Revision (as defined in ACPI 1.0b specification). 515314879Simp/// 516314879Simp#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01 517314879Simp 518314879Simp/// 519314879Simp/// Multiple APIC Flags 520314879Simp/// All other bits are reserved and must be set to 0. 521314879Simp/// 522314879Simp#define EFI_ACPI_1_0_PCAT_COMPAT BIT0 523314879Simp 524314879Simp// 525314879Simp// Multiple APIC Description Table APIC structure types 526314879Simp// All other values between 0x05 an 0xFF are reserved and 527314879Simp// will be ignored by OSPM. 528314879Simp// 529314879Simp#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00 530314879Simp#define EFI_ACPI_1_0_IO_APIC 0x01 531314879Simp#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02 532314879Simp#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 533314879Simp#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04 534314879Simp 535314879Simp// 536314879Simp// APIC Structure Definitions 537314879Simp// 538314879Simp 539314879Simp/// 540314879Simp/// Processor Local APIC Structure Definition. 541314879Simp/// 542314879Simptypedef struct { 543314879Simp UINT8 Type; 544314879Simp UINT8 Length; 545314879Simp UINT8 AcpiProcessorId; 546314879Simp UINT8 ApicId; 547314879Simp UINT32 Flags; 548314879Simp} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE; 549314879Simp 550314879Simp/// 551314879Simp/// Local APIC Flags. All other bits are reserved and must be 0. 552314879Simp/// 553314879Simp#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0 554314879Simp 555314879Simp/// 556314879Simp/// IO APIC Structure. 557314879Simp/// 558314879Simptypedef struct { 559314879Simp UINT8 Type; 560314879Simp UINT8 Length; 561314879Simp UINT8 IoApicId; 562314879Simp UINT8 Reserved; 563314879Simp UINT32 IoApicAddress; 564314879Simp UINT32 SystemVectorBase; 565314879Simp} EFI_ACPI_1_0_IO_APIC_STRUCTURE; 566314879Simp 567314879Simp/// 568314879Simp/// Interrupt Source Override Structure. 569314879Simp/// 570314879Simptypedef struct { 571314879Simp UINT8 Type; 572314879Simp UINT8 Length; 573314879Simp UINT8 Bus; 574314879Simp UINT8 Source; 575314879Simp UINT32 GlobalSystemInterruptVector; 576314879Simp UINT16 Flags; 577314879Simp} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 578314879Simp 579314879Simp/// 580314879Simp/// Non-Maskable Interrupt Source Structure. 581314879Simp/// 582314879Simptypedef struct { 583314879Simp UINT8 Type; 584314879Simp UINT8 Length; 585314879Simp UINT16 Flags; 586314879Simp UINT32 GlobalSystemInterruptVector; 587314879Simp} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 588314879Simp 589314879Simp/// 590314879Simp/// Local APIC NMI Structure. 591314879Simp/// 592314879Simptypedef struct { 593314879Simp UINT8 Type; 594314879Simp UINT8 Length; 595314879Simp UINT8 AcpiProcessorId; 596314879Simp UINT16 Flags; 597314879Simp UINT8 LocalApicInti; 598314879Simp} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE; 599314879Simp 600314879Simp/// 601314879Simp/// Smart Battery Description Table (SBST) 602314879Simp/// 603314879Simptypedef struct { 604314879Simp EFI_ACPI_DESCRIPTION_HEADER Header; 605314879Simp UINT32 WarningEnergyLevel; 606314879Simp UINT32 LowEnergyLevel; 607314879Simp UINT32 CriticalEnergyLevel; 608314879Simp} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE; 609314879Simp 610314879Simp// 611314879Simp// Known table signatures 612314879Simp// 613314879Simp 614314879Simp/// 615314879Simp/// "RSD PTR " Root System Description Pointer. 616314879Simp/// 617314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 618314879Simp 619314879Simp/// 620314879Simp/// "APIC" Multiple APIC Description Table. 621314879Simp/// 622314879Simp#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 623314879Simp 624314879Simp/// 625314879Simp/// "DSDT" Differentiated System Description Table. 626314879Simp/// 627314879Simp#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 628314879Simp 629314879Simp/// 630314879Simp/// "FACS" Firmware ACPI Control Structure. 631314879Simp/// 632314879Simp#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 633314879Simp 634314879Simp/// 635314879Simp/// "FACP" Fixed ACPI Description Table. 636314879Simp/// 637314879Simp#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 638314879Simp 639314879Simp/// 640314879Simp/// "PSDT" Persistent System Description Table. 641314879Simp/// 642314879Simp#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 643314879Simp 644314879Simp/// 645314879Simp/// "RSDT" Root System Description Table. 646314879Simp/// 647314879Simp#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 648314879Simp 649314879Simp/// 650314879Simp/// "SBST" Smart Battery Specification Table. 651314879Simp/// 652314879Simp#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 653314879Simp 654314879Simp/// 655314879Simp/// "SSDT" Secondary System Description Table. 656314879Simp/// 657314879Simp#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 658314879Simp 659314879Simp#pragma pack() 660314879Simp 661314879Simp#endif 662