//\r
// Define for Desriptor\r
//\r
-#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
-#define ACPI_END_TAG_DESCRIPTOR 0x79\r
+#define ACPI_DMA_DESCRIPTOR 0x2A\r
+#define ACPI_IO_PORT_DESCRIPTOR 0x47\r
+#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B\r
+#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22\r
+#define ACPI_IRQ_DESCRIPTOR 0x23\r
+#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85\r
+#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86\r
+#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A\r
+#define ACPI_END_TAG_DESCRIPTOR 0x79\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
+/// 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
#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