/** @file \r
ACPI 1.0b definitions from the ACPI Specification, revision 1.0b\r
\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved<BR>\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
#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
//\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
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
#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
#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