| /** @file |
| ACPI 1.0b definitions from the ACPI Specification, revision 1.0b |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| Copyright (c) 2020, Arm Limited. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| **/ |
| |
| #ifndef _ACPI_1_0_H_ |
| #define _ACPI_1_0_H_ |
| |
| FILE_LICENCE ( BSD2_PATENT ); |
| |
| #include <ipxe/efi/IndustryStandard/AcpiAml.h> |
| |
| /// |
| /// Common table header, this prefaces all ACPI tables, including FACS, but |
| /// excluding the RSD PTR structure. |
| /// |
| typedef struct { |
| UINT32 Signature; |
| UINT32 Length; |
| } EFI_ACPI_COMMON_HEADER; |
| |
| #pragma pack(1) |
| /// |
| /// The common ACPI description table header. This structure prefaces most ACPI tables. |
| /// |
| typedef struct { |
| UINT32 Signature; |
| UINT32 Length; |
| UINT8 Revision; |
| UINT8 Checksum; |
| UINT8 OemId[6]; |
| UINT64 OemTableId; |
| UINT32 OemRevision; |
| UINT32 CreatorId; |
| UINT32 CreatorRevision; |
| } EFI_ACPI_DESCRIPTION_HEADER; |
| #pragma pack() |
| |
| // |
| // Define for Descriptor |
| // |
| #define ACPI_SMALL_ITEM_FLAG 0x00 |
| #define ACPI_LARGE_ITEM_FLAG 0x01 |
| |
| // |
| // Small Item Descriptor Name |
| // |
| #define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04 |
| #define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05 |
| #define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06 |
| #define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07 |
| #define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08 |
| #define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09 |
| #define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E |
| #define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F |
| |
| // |
| // Large Item Descriptor Name |
| // |
| #define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01 |
| #define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04 |
| #define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05 |
| #define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06 |
| #define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07 |
| #define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08 |
| #define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09 |
| #define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A |
| |
| // |
| // Small Item Descriptor Value |
| // |
| #define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22 |
| #define ACPI_IRQ_DESCRIPTOR 0x23 |
| #define ACPI_DMA_DESCRIPTOR 0x2A |
| #define ACPI_START_DEPENDENT_DESCRIPTOR 0x30 |
| #define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31 |
| #define ACPI_END_DEPENDENT_DESCRIPTOR 0x38 |
| #define ACPI_IO_PORT_DESCRIPTOR 0x47 |
| #define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B |
| #define ACPI_END_TAG_DESCRIPTOR 0x79 |
| |
| // |
| // Large Item Descriptor Value |
| // |
| #define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81 |
| #define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85 |
| #define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86 |
| #define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87 |
| #define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88 |
| #define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89 |
| #define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A |
| #define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A |
| |
| // |
| // Resource Type |
| // |
| #define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00 |
| #define ACPI_ADDRESS_SPACE_TYPE_IO 0x01 |
| #define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02 |
| |
| /// |
| /// Power Management Timer frequency is fixed at 3.579545MHz. |
| /// |
| #define ACPI_TIMER_FREQUENCY 3579545 |
| |
| // |
| // Ensure proper structure formats |
| // |
| #pragma pack(1) |
| |
| /// |
| /// The common definition of QWORD, DWORD, and WORD |
| /// Address Space Descriptors. |
| /// |
| typedef PACKED struct { |
| UINT8 Desc; |
| UINT16 Len; |
| UINT8 ResType; |
| UINT8 GenFlag; |
| UINT8 SpecificFlag; |
| UINT64 AddrSpaceGranularity; |
| UINT64 AddrRangeMin; |
| UINT64 AddrRangeMax; |
| UINT64 AddrTranslationOffset; |
| UINT64 AddrLen; |
| } EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR; |
| |
| typedef PACKED union { |
| UINT8 Byte; |
| PACKED struct { |
| UINT8 Length : 3; |
| UINT8 Name : 4; |
| UINT8 Type : 1; |
| } Bits; |
| } ACPI_SMALL_RESOURCE_HEADER; |
| |
| typedef PACKED struct { |
| PACKED union { |
| UINT8 Byte; |
| PACKED struct { |
| UINT8 Name : 7; |
| UINT8 Type : 1; |
| } Bits; |
| } Header; |
| UINT16 Length; |
| } ACPI_LARGE_RESOURCE_HEADER; |
| |
| /// |
| /// IRQ Descriptor. |
| /// |
| typedef PACKED struct { |
| ACPI_SMALL_RESOURCE_HEADER Header; |
| UINT16 Mask; |
| } EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR; |
| |
| /// |
| /// IRQ Descriptor. |
| /// |
| typedef PACKED struct { |
| ACPI_SMALL_RESOURCE_HEADER Header; |
| UINT16 Mask; |
| UINT8 Information; |
| } EFI_ACPI_IRQ_DESCRIPTOR; |
| |
| /// |
| /// DMA Descriptor. |
| /// |
| typedef PACKED struct { |
| ACPI_SMALL_RESOURCE_HEADER Header; |
| UINT8 ChannelMask; |
| UINT8 Information; |
| } EFI_ACPI_DMA_DESCRIPTOR; |
| |
| /// |
| /// I/O Port Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_SMALL_RESOURCE_HEADER Header; |
| UINT8 Information; |
| UINT16 BaseAddressMin; |
| UINT16 BaseAddressMax; |
| UINT8 Alignment; |
| UINT8 Length; |
| } EFI_ACPI_IO_PORT_DESCRIPTOR; |
| |
| /// |
| /// Fixed Location I/O Port Descriptor. |
| /// |
| typedef PACKED struct { |
| ACPI_SMALL_RESOURCE_HEADER Header; |
| UINT16 BaseAddress; |
| UINT8 Length; |
| } EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR; |
| |
| /// |
| /// 24-Bit Memory Range Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 Information; |
| UINT16 BaseAddressMin; |
| UINT16 BaseAddressMax; |
| UINT16 Alignment; |
| UINT16 Length; |
| } EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR; |
| |
| /// |
| /// 32-Bit Memory Range Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 Information; |
| UINT32 BaseAddressMin; |
| UINT32 BaseAddressMax; |
| UINT32 Alignment; |
| UINT32 Length; |
| } EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR; |
| |
| /// |
| /// Fixed 32-Bit Fixed Memory Range Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 Information; |
| UINT32 BaseAddress; |
| UINT32 Length; |
| } EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR; |
| |
| /// |
| /// QWORD Address Space Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 ResType; |
| UINT8 GenFlag; |
| UINT8 SpecificFlag; |
| UINT64 AddrSpaceGranularity; |
| UINT64 AddrRangeMin; |
| UINT64 AddrRangeMax; |
| UINT64 AddrTranslationOffset; |
| UINT64 AddrLen; |
| } EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR; |
| |
| /// |
| /// DWORD Address Space Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 ResType; |
| UINT8 GenFlag; |
| UINT8 SpecificFlag; |
| UINT32 AddrSpaceGranularity; |
| UINT32 AddrRangeMin; |
| UINT32 AddrRangeMax; |
| UINT32 AddrTranslationOffset; |
| UINT32 AddrLen; |
| } EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR; |
| |
| /// |
| /// WORD Address Space Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 ResType; |
| UINT8 GenFlag; |
| UINT8 SpecificFlag; |
| UINT16 AddrSpaceGranularity; |
| UINT16 AddrRangeMin; |
| UINT16 AddrRangeMax; |
| UINT16 AddrTranslationOffset; |
| UINT16 AddrLen; |
| } EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR; |
| |
| /// |
| /// Extended Interrupt Descriptor |
| /// |
| typedef PACKED struct { |
| ACPI_LARGE_RESOURCE_HEADER Header; |
| UINT8 InterruptVectorFlags; |
| UINT8 InterruptTableLength; |
| UINT32 InterruptNumber[1]; |
| } EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR; |
| |
| #pragma pack() |
| |
| /// |
| /// The End tag identifies an end of resource data. |
| /// |
| typedef struct { |
| UINT8 Desc; |
| UINT8 Checksum; |
| } EFI_ACPI_END_TAG_DESCRIPTOR; |
| |
| // |
| // General use definitions |
| // |
| #define EFI_ACPI_RESERVED_BYTE 0x00 |
| #define EFI_ACPI_RESERVED_WORD 0x0000 |
| #define EFI_ACPI_RESERVED_DWORD 0x00000000 |
| #define EFI_ACPI_RESERVED_QWORD 0x0000000000000000 |
| |
| // |
| // Resource Type Specific Flags |
| // Ref ACPI specification 6.4.3.5.5 |
| // |
| // Bit [0] : Write Status, _RW |
| // |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0) |
| // |
| // Bit [2:1] : Memory Attributes, _MEM |
| // |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1) |
| // |
| // Bit [4:3] : Memory Attributes, _MTP |
| // |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3) |
| #define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3) |
| // |
| // Bit [5] : Memory to I/O Translation, _TTP |
| // |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5) |
| #define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5) |
| |
| // |
| // IRQ Information |
| // Ref ACPI specification 6.4.2.1 |
| // |
| #define EFI_ACPI_IRQ_SHARABLE_MASK 0x10 |
| #define EFI_ACPI_IRQ_SHARABLE 0x10 |
| |
| #define EFI_ACPI_IRQ_POLARITY_MASK 0x08 |
| #define EFI_ACPI_IRQ_HIGH_TRUE 0x00 |
| #define EFI_ACPI_IRQ_LOW_FALSE 0x08 |
| |
| #define EFI_ACPI_IRQ_MODE 0x01 |
| #define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00 |
| #define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01 |
| |
| // |
| // DMA Information |
| // Ref ACPI specification 6.4.2.2 |
| // |
| #define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60 |
| #define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 |
| #define EFI_ACPI_DMA_SPEED_TYPE_A 0x20 |
| #define EFI_ACPI_DMA_SPEED_TYPE_B 0x40 |
| #define EFI_ACPI_DMA_SPEED_TYPE_F 0x60 |
| |
| #define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04 |
| #define EFI_ACPI_DMA_BUS_MASTER 0x04 |
| |
| #define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03 |
| #define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00 |
| #define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01 |
| #define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x02 |
| |
| // |
| // IO Information |
| // Ref ACPI specification 6.4.2.5 |
| // |
| #define EFI_ACPI_IO_DECODE_MASK 0x01 |
| #define EFI_ACPI_IO_DECODE_16_BIT 0x01 |
| #define EFI_ACPI_IO_DECODE_10_BIT 0x00 |
| |
| // |
| // Memory Information |
| // Ref ACPI specification 6.4.3.4 |
| // |
| #define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01 |
| #define EFI_ACPI_MEMORY_WRITABLE 0x01 |
| #define EFI_ACPI_MEMORY_NON_WRITABLE 0x00 |
| |
| // |
| // Interrupt Vector Flags definitions for Extended Interrupt Descriptor |
| // Ref ACPI specification 6.4.3.6 |
| // |
| #define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_PRODUCER_CONSUMER_MASK BIT0 |
| #define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_MODE_MASK BIT1 |
| #define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_POLARITY_MASK BIT2 |
| #define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_SHARABLE_MASK BIT3 |
| #define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_WAKE_CAPABLITY_MASK BIT4 |
| |
| // |
| // Ensure proper structure formats |
| // |
| #pragma pack(1) |
| // |
| // ACPI 1.0b table structures |
| // |
| |
| /// |
| /// Root System Description Pointer Structure. |
| /// |
| typedef struct { |
| UINT64 Signature; |
| UINT8 Checksum; |
| UINT8 OemId[6]; |
| UINT8 Reserved; |
| UINT32 RsdtAddress; |
| } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER; |
| |
| // |
| // Root System Description Table |
| // No definition needed as it is a common description table header, the same with |
| // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. |
| // |
| |
| /// |
| /// RSDT Revision (as defined in ACPI 1.0b specification). |
| /// |
| #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 |
| |
| /// |
| /// Fixed ACPI Description Table Structure (FADT). |
| /// |
| typedef struct { |
| EFI_ACPI_DESCRIPTION_HEADER Header; |
| UINT32 FirmwareCtrl; |
| UINT32 Dsdt; |
| UINT8 IntModel; |
| UINT8 Reserved1; |
| UINT16 SciInt; |
| UINT32 SmiCmd; |
| UINT8 AcpiEnable; |
| UINT8 AcpiDisable; |
| UINT8 S4BiosReq; |
| UINT8 Reserved2; |
| UINT32 Pm1aEvtBlk; |
| UINT32 Pm1bEvtBlk; |
| UINT32 Pm1aCntBlk; |
| UINT32 Pm1bCntBlk; |
| UINT32 Pm2CntBlk; |
| UINT32 PmTmrBlk; |
| UINT32 Gpe0Blk; |
| UINT32 Gpe1Blk; |
| UINT8 Pm1EvtLen; |
| UINT8 Pm1CntLen; |
| UINT8 Pm2CntLen; |
| UINT8 PmTmLen; |
| UINT8 Gpe0BlkLen; |
| UINT8 Gpe1BlkLen; |
| UINT8 Gpe1Base; |
| UINT8 Reserved3; |
| UINT16 PLvl2Lat; |
| UINT16 PLvl3Lat; |
| UINT16 FlushSize; |
| UINT16 FlushStride; |
| UINT8 DutyOffset; |
| UINT8 DutyWidth; |
| UINT8 DayAlrm; |
| UINT8 MonAlrm; |
| UINT8 Century; |
| UINT8 Reserved4; |
| UINT8 Reserved5; |
| UINT8 Reserved6; |
| UINT32 Flags; |
| } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE; |
| |
| /// |
| /// FADT Version (as defined in ACPI 1.0b specification). |
| /// |
| #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01 |
| |
| #define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0 |
| #define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1 |
| |
| // |
| // Fixed ACPI Description Table Fixed Feature Flags |
| // All other bits are reserved and must be set to 0. |
| // |
| #define EFI_ACPI_1_0_WBINVD BIT0 |
| #define EFI_ACPI_1_0_WBINVD_FLUSH BIT1 |
| #define EFI_ACPI_1_0_PROC_C1 BIT2 |
| #define EFI_ACPI_1_0_P_LVL2_UP BIT3 |
| #define EFI_ACPI_1_0_PWR_BUTTON BIT4 |
| #define EFI_ACPI_1_0_SLP_BUTTON BIT5 |
| #define EFI_ACPI_1_0_FIX_RTC BIT6 |
| #define EFI_ACPI_1_0_RTC_S4 BIT7 |
| #define EFI_ACPI_1_0_TMR_VAL_EXT BIT8 |
| #define EFI_ACPI_1_0_DCK_CAP BIT9 |
| |
| /// |
| /// Firmware ACPI Control Structure. |
| /// |
| typedef struct { |
| UINT32 Signature; |
| UINT32 Length; |
| UINT32 HardwareSignature; |
| UINT32 FirmwareWakingVector; |
| UINT32 GlobalLock; |
| UINT32 Flags; |
| UINT8 Reserved[40]; |
| } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; |
| |
| /// |
| /// Firmware Control Structure Feature Flags. |
| /// All other bits are reserved and must be set to 0. |
| /// |
| #define EFI_ACPI_1_0_S4BIOS_F BIT0 |
| |
| /// |
| /// Multiple APIC Description Table header definition. The rest of the table |
| /// must be defined in a platform-specific manner. |
| /// |
| typedef struct { |
| EFI_ACPI_DESCRIPTION_HEADER Header; |
| UINT32 LocalApicAddress; |
| UINT32 Flags; |
| } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; |
| |
| /// |
| /// MADT Revision (as defined in ACPI 1.0b specification). |
| /// |
| #define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01 |
| |
| /// |
| /// Multiple APIC Flags |
| /// All other bits are reserved and must be set to 0. |
| /// |
| #define EFI_ACPI_1_0_PCAT_COMPAT BIT0 |
| |
| // |
| // Multiple APIC Description Table APIC structure types |
| // All other values between 0x05 an 0xFF are reserved and |
| // will be ignored by OSPM. |
| // |
| #define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00 |
| #define EFI_ACPI_1_0_IO_APIC 0x01 |
| #define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02 |
| #define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 |
| #define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04 |
| |
| // |
| // APIC Structure Definitions |
| // |
| |
| /// |
| /// Processor Local APIC Structure Definition. |
| /// |
| typedef struct { |
| UINT8 Type; |
| UINT8 Length; |
| UINT8 AcpiProcessorId; |
| UINT8 ApicId; |
| UINT32 Flags; |
| } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE; |
| |
| /// |
| /// Local APIC Flags. All other bits are reserved and must be 0. |
| /// |
| #define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0 |
| |
| /// |
| /// IO APIC Structure. |
| /// |
| typedef struct { |
| UINT8 Type; |
| UINT8 Length; |
| UINT8 IoApicId; |
| UINT8 Reserved; |
| UINT32 IoApicAddress; |
| UINT32 SystemVectorBase; |
| } EFI_ACPI_1_0_IO_APIC_STRUCTURE; |
| |
| /// |
| /// Interrupt Source Override Structure. |
| /// |
| typedef struct { |
| UINT8 Type; |
| UINT8 Length; |
| UINT8 Bus; |
| UINT8 Source; |
| UINT32 GlobalSystemInterruptVector; |
| UINT16 Flags; |
| } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; |
| |
| /// |
| /// Non-Maskable Interrupt Source Structure. |
| /// |
| typedef struct { |
| UINT8 Type; |
| UINT8 Length; |
| UINT16 Flags; |
| UINT32 GlobalSystemInterruptVector; |
| } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; |
| |
| /// |
| /// Local APIC NMI Structure. |
| /// |
| typedef struct { |
| UINT8 Type; |
| UINT8 Length; |
| UINT8 AcpiProcessorId; |
| UINT16 Flags; |
| UINT8 LocalApicInti; |
| } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE; |
| |
| /// |
| /// Smart Battery Description Table (SBST) |
| /// |
| typedef struct { |
| EFI_ACPI_DESCRIPTION_HEADER Header; |
| UINT32 WarningEnergyLevel; |
| UINT32 LowEnergyLevel; |
| UINT32 CriticalEnergyLevel; |
| } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE; |
| |
| // |
| // Known table signatures |
| // |
| |
| /// |
| /// "RSD PTR " Root System Description Pointer. |
| /// |
| #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') |
| |
| /// |
| /// "APIC" Multiple APIC Description Table. |
| /// |
| #define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') |
| |
| /// |
| /// "DSDT" Differentiated System Description Table. |
| /// |
| #define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') |
| |
| /// |
| /// "FACS" Firmware ACPI Control Structure. |
| /// |
| #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') |
| |
| /// |
| /// "FACP" Fixed ACPI Description Table. |
| /// |
| #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') |
| |
| /// |
| /// "PSDT" Persistent System Description Table. |
| /// |
| #define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') |
| |
| /// |
| /// "RSDT" Root System Description Table. |
| /// |
| #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') |
| |
| /// |
| /// "SBST" Smart Battery Specification Table. |
| /// |
| #define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') |
| |
| /// |
| /// "SSDT" Secondary System Description Table. |
| /// |
| #define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') |
| |
| #pragma pack() |
| |
| #endif |