/** @file \r
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b\r
\r
- Copyright (c) 2006 - 2008, Intel Corporation\r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
**/\r
\r
#ifndef _ACPI_1_0_H_\r
#define _ACPI_1_0_H_\r
\r
+#include <IndustryStandard/AcpiAml.h>\r
+\r
///\r
/// Common table header, this prefaces all ACPI tables, including FACS, but\r
-/// excluding the RSD PTR structure\r
+/// excluding the RSD PTR structure.\r
///\r
typedef struct {\r
UINT32 Signature;\r
\r
#pragma pack(1)\r
///\r
-/// Common ACPI description table header. This structure prefaces most ACPI tables.\r
+/// The common ACPI description table header. This structure prefaces most ACPI tables.\r
///\r
typedef struct {\r
UINT32 Signature;\r
//\r
// Define for Desriptor\r
//\r
-#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
-#define ACPI_END_TAG_DESCRIPTOR 0x79\r
+#define ACPI_SMALL_ITEM_FLAG 0x00\r
+#define ACPI_LARGE_ITEM_FLAG 0x01\r
+\r
+//\r
+// Small Item Descriptor Name\r
+//\r
+#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04\r
+#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05\r
+#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06\r
+#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07\r
+#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08\r
+#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09\r
+#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E\r
+#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F\r
+\r
+//\r
+// Large Item Descriptor Name\r
+//\r
+#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01\r
+#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04\r
+#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05\r
+#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06\r
+#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07\r
+#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08\r
+#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09\r
+#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A\r
+\r
+//\r
+// Small Item Descriptor Value\r
+//\r
+#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22\r
+#define ACPI_IRQ_DESCRIPTOR 0x23\r
+#define ACPI_DMA_DESCRIPTOR 0x2A\r
+#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30\r
+#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31\r
+#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38\r
+#define ACPI_IO_PORT_DESCRIPTOR 0x47\r
+#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B\r
+#define ACPI_END_TAG_DESCRIPTOR 0x79\r
+\r
+//\r
+// Large Item Descriptor Value\r
+//\r
+#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81\r
+#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85\r
+#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86\r
+#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87\r
+#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88\r
+#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89\r
+#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
+#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
\r
//\r
// Resource Type\r
#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02\r
\r
///\r
-/// Power Management Timer frequency is fixed at 3.579545MHz\r
+/// Power Management Timer frequency is fixed at 3.579545MHz.\r
///\r
#define ACPI_TIMER_FREQUENCY 3579545\r
\r
\r
///\r
/// The commond definition of QWORD, DWORD, and WORD\r
-/// Address Space Descriptors\r
+/// Address Space Descriptors.\r
///\r
typedef PACKED struct {\r
UINT8 Desc;\r
UINT64 AddrLen;\r
} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
\r
+typedef PACKED union {\r
+ UINT8 Byte;\r
+ PACKED struct {\r
+ UINT8 Length : 3;\r
+ UINT8 Name : 4;\r
+ UINT8 Type : 1;\r
+ } Bits;\r
+} ACPI_SMALL_RESOURCE_HEADER;\r
+\r
+typedef PACKED struct {\r
+ PACKED union {\r
+ UINT8 Byte;\r
+ PACKED struct {\r
+ UINT8 Name : 7;\r
+ UINT8 Type : 1;\r
+ }Bits;\r
+ } Header;\r
+ UINT16 Length;\r
+} ACPI_LARGE_RESOURCE_HEADER;\r
+\r
+///\r
+/// IRQ Descriptor.\r
+///\r
+typedef PACKED struct {\r
+ ACPI_SMALL_RESOURCE_HEADER Header;\r
+ UINT16 Mask;\r
+} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;\r
+\r
+///\r
+/// IRQ Descriptor.\r
+///\r
+typedef PACKED struct {\r
+ ACPI_SMALL_RESOURCE_HEADER Header;\r
+ UINT16 Mask;\r
+ UINT8 Information;\r
+} EFI_ACPI_IRQ_DESCRIPTOR;\r
+\r
+///\r
+/// DMA Descriptor.\r
+///\r
+typedef PACKED struct {\r
+ ACPI_SMALL_RESOURCE_HEADER Header;\r
+ UINT8 ChannelMask;\r
+ UINT8 Information;\r
+} EFI_ACPI_DMA_DESCRIPTOR;\r
+\r
+///\r
+/// I/O Port Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_SMALL_RESOURCE_HEADER Header;\r
+ UINT8 Information;\r
+ UINT16 BaseAddressMin;\r
+ UINT16 BaseAddressMax;\r
+ UINT8 Alignment;\r
+ UINT8 Length;\r
+} EFI_ACPI_IO_PORT_DESCRIPTOR;\r
+\r
+///\r
+/// Fixed Location I/O Port Descriptor.\r
+///\r
+typedef PACKED struct {\r
+ ACPI_SMALL_RESOURCE_HEADER Header;\r
+ UINT16 BaseAddress;\r
+ UINT8 Length;\r
+} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;\r
+\r
+///\r
+/// 24-Bit Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 Information;\r
+ UINT16 BaseAddressMin;\r
+ UINT16 BaseAddressMax;\r
+ UINT16 Alignment;\r
+ UINT16 Length;\r
+} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// 32-Bit Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 Information;\r
+ UINT32 BaseAddressMin;\r
+ UINT32 BaseAddressMax;\r
+ UINT32 Alignment;\r
+ UINT32 Length;\r
+} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// Fixed 32-Bit Fixed Memory Range Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 Information;\r
+ UINT32 BaseAddress;\r
+ UINT32 Length;\r
+} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR;\r
+\r
+///\r
+/// QWORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 ResType;\r
+ UINT8 GenFlag;\r
+ UINT8 SpecificFlag;\r
+ UINT64 AddrSpaceGranularity;\r
+ UINT64 AddrRangeMin;\r
+ UINT64 AddrRangeMax;\r
+ UINT64 AddrTranslationOffset;\r
+ UINT64 AddrLen;\r
+} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// DWORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 ResType;\r
+ UINT8 GenFlag;\r
+ UINT8 SpecificFlag;\r
+ UINT32 AddrSpaceGranularity;\r
+ UINT32 AddrRangeMin;\r
+ UINT32 AddrRangeMax;\r
+ UINT32 AddrTranslationOffset;\r
+ UINT32 AddrLen;\r
+} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// WORD Address Space Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 ResType;\r
+ UINT8 GenFlag;\r
+ UINT8 SpecificFlag;\r
+ UINT16 AddrSpaceGranularity;\r
+ UINT16 AddrRangeMin;\r
+ UINT16 AddrRangeMax;\r
+ UINT16 AddrTranslationOffset;\r
+ UINT16 AddrLen;\r
+} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR;\r
+\r
+///\r
+/// Extended Interrupt Descriptor\r
+///\r
+typedef PACKED struct {\r
+ ACPI_LARGE_RESOURCE_HEADER Header;\r
+ UINT8 InterruptVectorFlags;\r
+ UINT8 InterruptTableLength;\r
+ UINT32 InterruptNumber[1];\r
+} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR;\r
+\r
#pragma pack()\r
\r
///\r
-/// the End tag identifies an end of resource data.\r
+/// The End tag identifies an end of resource data.\r
///\r
typedef struct {\r
UINT8 Desc;\r
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5)\r
#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5)\r
\r
+//\r
+// IRQ Information\r
+// Ref ACPI specification 6.4.2.1\r
+//\r
+#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10\r
+#define EFI_ACPI_IRQ_SHARABLE 0x10\r
+\r
+#define EFI_ACPI_IRQ_POLARITY_MASK 0x08\r
+#define EFI_ACPI_IRQ_HIGH_TRUE 0x00\r
+#define EFI_ACPI_IRQ_LOW_FALSE 0x08\r
+\r
+#define EFI_ACPI_IRQ_MODE 0x01\r
+#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00\r
+#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01\r
+\r
+//\r
+// DMA Information\r
+// Ref ACPI specification 6.4.2.2\r
+//\r
+#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60\r
+#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00\r
+#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20\r
+#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40\r
+#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60\r
+ \r
+#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04\r
+#define EFI_ACPI_DMA_BUS_MASTER 0x04\r
+\r
+#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03\r
+#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00\r
+#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01\r
+#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x10\r
+\r
+//\r
+// IO Information\r
+// Ref ACPI specification 6.4.2.5\r
+//\r
+#define EFI_ACPI_IO_DECODE_MASK 0x01\r
+#define EFI_ACPI_IO_DECODE_16_BIT 0x01\r
+#define EFI_ACPI_IO_DECODE_10_BIT 0x00\r
+\r
+//\r
+// Memory Information\r
+// Ref ACPI specification 6.4.3.4\r
+//\r
+#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01\r
+#define EFI_ACPI_MEMORY_WRITABLE 0x01\r
+#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00\r
+\r
//\r
// Ensure proper structure formats\r
//\r
//\r
\r
///\r
-/// Root System Description Pointer Structure\r
+/// Root System Description Pointer Structure.\r
///\r
typedef struct {\r
UINT64 Signature;\r
//\r
\r
///\r
-/// RSDT Revision (as defined in ACPI 1.0b spec.)\r
+/// RSDT Revision (as defined in ACPI 1.0b specification).\r
///\r
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
\r
///\r
-/// Fixed ACPI Description Table Structure (FADT)\r
+/// Fixed ACPI Description Table Structure (FADT).\r
///\r
typedef struct {\r
EFI_ACPI_DESCRIPTION_HEADER Header;\r
} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
\r
///\r
-/// FADT Version (as defined in ACPI 1.0b spec.)\r
+/// FADT Version (as defined in ACPI 1.0b specification).\r
///\r
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01\r
\r
+#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0\r
+#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1\r
+\r
//\r
// Fixed ACPI Description Table Fixed Feature Flags\r
// All other bits are reserved and must be set to 0.\r
#define EFI_ACPI_1_0_DCK_CAP BIT9\r
\r
///\r
-/// Firmware ACPI Control Structure\r
+/// Firmware ACPI Control Structure.\r
///\r
typedef struct {\r
UINT32 Signature;\r
} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
\r
///\r
-/// Firmware Control Structure Feature Flags\r
+/// Firmware Control Structure Feature Flags.\r
/// All other bits are reserved and must be set to 0.\r
///\r
#define EFI_ACPI_1_0_S4BIOS_F BIT0\r
\r
///\r
/// Multiple APIC Description Table header definition. The rest of the table\r
-/// must be defined in a platform specific manner.\r
+/// must be defined in a platform-specific manner.\r
///\r
typedef struct {\r
EFI_ACPI_DESCRIPTION_HEADER Header;\r
} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
\r
///\r
-/// MADT Revision (as defined in ACPI 1.0b spec.)\r
+/// MADT Revision (as defined in ACPI 1.0b specification).\r
///\r
#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01\r
\r
//\r
\r
///\r
-/// Processor Local APIC Structure Definition\r
+/// Processor Local APIC Structure Definition.\r
///\r
typedef struct {\r
UINT8 Type;\r
#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0\r
\r
///\r
-/// IO APIC Structure\r
+/// IO APIC Structure.\r
///\r
typedef struct {\r
UINT8 Type;\r
} EFI_ACPI_1_0_IO_APIC_STRUCTURE;\r
\r
///\r
-/// Interrupt Source Override Structure\r
+/// Interrupt Source Override Structure.\r
///\r
typedef struct {\r
UINT8 Type;\r
} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
\r
///\r
-/// Non-Maskable Interrupt Source Structure\r
+/// Non-Maskable Interrupt Source Structure.\r
///\r
typedef struct {\r
UINT8 Type;\r
} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
\r
///\r
-/// Local APIC NMI Structure\r
+/// Local APIC NMI Structure.\r
///\r
typedef struct {\r
UINT8 Type;\r
//\r
\r
///\r
-/// "RSD PTR " Root System Description Pointer\r
+/// "RSD PTR " Root System Description Pointer.\r
///\r
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')\r
\r
///\r
-/// "APIC" Multiple APIC Description Table\r
+/// "APIC" Multiple APIC Description Table.\r
///\r
#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')\r
\r
///\r
-/// "DSDT" Differentiated System Description Table\r
+/// "DSDT" Differentiated System Description Table.\r
///\r
#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')\r
\r
///\r
-/// "FACS" Firmware ACPI Control Structure\r
+/// "FACS" Firmware ACPI Control Structure.\r
///\r
#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')\r
\r
///\r
-/// "FACP" Fixed ACPI Description Table\r
+/// "FACP" Fixed ACPI Description Table.\r
///\r
#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')\r
\r
///\r
-/// "PSDT" Persistent System Description Table\r
+/// "PSDT" Persistent System Description Table.\r
///\r
#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')\r
\r
///\r
-/// "RSDT" Root System Description Table\r
+/// "RSDT" Root System Description Table.\r
///\r
#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')\r
\r
///\r
-/// "SBST" Smart Battery Specification Table\r
+/// "SBST" Smart Battery Specification Table.\r
///\r
#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')\r
\r
///\r
-/// "SSDT" Secondary System Description Table\r
+/// "SSDT" Secondary System Description Table.\r
///\r
#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')\r
\r