diff options
Diffstat (limited to 'sys/contrib/dev/acpica/amlresrc.h')
-rw-r--r-- | sys/contrib/dev/acpica/amlresrc.h | 321 |
1 files changed, 187 insertions, 134 deletions
diff --git a/sys/contrib/dev/acpica/amlresrc.h b/sys/contrib/dev/acpica/amlresrc.h index 1ac74a8..b934a1c 100644 --- a/sys/contrib/dev/acpica/amlresrc.h +++ b/sys/contrib/dev/acpica/amlresrc.h @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: amlresrc.h - AML resource descriptors - * $Revision: 25 $ + * $Revision: 1.33 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. * All rights reserved. * * 2. License @@ -123,6 +123,8 @@ #define ASL_RESNAME_ADDRESS "_ADR" #define ASL_RESNAME_ALIGNMENT "_ALN" #define ASL_RESNAME_ADDRESSSPACE "_ASI" +#define ASL_RESNAME_ACCESSSIZE "_ASZ" +#define ASL_RESNAME_TYPESPECIFICATTRIBUTES "_ATT" #define ASL_RESNAME_BASEADDRESS "_BAS" #define ASL_RESNAME_BUSMASTER "_BM_" /* Master(1), Slave(0) */ #define ASL_RESNAME_DECODE "_DEC" @@ -174,217 +176,254 @@ typedef struct asl_resource_node * Resource descriptors defined in the ACPI specification. * * Packing/alignment must be BYTE because these descriptors - * are used to overlay the AML byte stream. + * are used to overlay the raw AML byte stream. */ #pragma pack(1) -typedef struct asl_irq_format_desc -{ +/* + * SMALL descriptors + */ +#define AML_RESOURCE_SMALL_HEADER_COMMON \ UINT8 DescriptorType; + +typedef struct aml_resource_small_header +{ + AML_RESOURCE_SMALL_HEADER_COMMON + +} AML_RESOURCE_SMALL_HEADER; + + +typedef struct aml_resource_irq +{ + AML_RESOURCE_SMALL_HEADER_COMMON UINT16 IrqMask; UINT8 Flags; -} ASL_IRQ_FORMAT_DESC; +} AML_RESOURCE_IRQ; -typedef struct asl_irq_noflags_desc +typedef struct aml_resource_irq_noflags { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON UINT16 IrqMask; -} ASL_IRQ_NOFLAGS_DESC; +} AML_RESOURCE_IRQ_NOFLAGS; -typedef struct asl_dma_format_desc +typedef struct aml_resource_dma { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON UINT8 DmaChannelMask; UINT8 Flags; -} ASL_DMA_FORMAT_DESC; +} AML_RESOURCE_DMA; -typedef struct asl_start_dependent_desc +typedef struct aml_resource_start_dependent { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON UINT8 Flags; -} ASL_START_DEPENDENT_DESC; +} AML_RESOURCE_START_DEPENDENT; -typedef struct asl_start_dependent_noprio_desc +typedef struct aml_resource_start_dependent_noprio { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON -} ASL_START_DEPENDENT_NOPRIO_DESC; +} AML_RESOURCE_START_DEPENDENT_NOPRIO; -typedef struct asl_end_dependent_desc +typedef struct aml_resource_end_dependent { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON -} ASL_END_DEPENDENT_DESC; +} AML_RESOURCE_END_DEPENDENT; -typedef struct asl_io_port_desc +typedef struct aml_resource_io { - UINT8 DescriptorType; - UINT8 Information; - UINT16 AddressMin; - UINT16 AddressMax; + AML_RESOURCE_SMALL_HEADER_COMMON + UINT8 Flags; + UINT16 Minimum; + UINT16 Maximum; UINT8 Alignment; - UINT8 Length; + UINT8 AddressLength; -} ASL_IO_PORT_DESC; +} AML_RESOURCE_IO; -typedef struct asl_fixed_io_port_desc +typedef struct aml_resource_fixed_io { - UINT8 DescriptorType; - UINT16 BaseAddress; - UINT8 Length; + AML_RESOURCE_SMALL_HEADER_COMMON + UINT16 Address; + UINT8 AddressLength; -} ASL_FIXED_IO_PORT_DESC; +} AML_RESOURCE_FIXED_IO; -typedef struct asl_small_vendor_desc +typedef struct aml_resource_vendor_small { - UINT8 DescriptorType; - UINT8 VendorDefined[7]; + AML_RESOURCE_SMALL_HEADER_COMMON -} ASL_SMALL_VENDOR_DESC; +} AML_RESOURCE_VENDOR_SMALL; -typedef struct asl_end_tag_desc +typedef struct aml_resource_end_tag { - UINT8 DescriptorType; + AML_RESOURCE_SMALL_HEADER_COMMON UINT8 Checksum; -} ASL_END_TAG_DESC; +} AML_RESOURCE_END_TAG; -/* LARGE descriptors */ +/* + * LARGE descriptors + */ +#define AML_RESOURCE_LARGE_HEADER_COMMON \ + UINT8 DescriptorType;\ + UINT16 ResourceLength; -typedef struct asl_memory_24_desc +typedef struct aml_resource_large_header { - UINT8 DescriptorType; - UINT16 Length; - UINT8 Information; - UINT16 AddressMin; - UINT16 AddressMax; - UINT16 Alignment; - UINT16 RangeLength; + AML_RESOURCE_LARGE_HEADER_COMMON -} ASL_MEMORY_24_DESC; +} AML_RESOURCE_LARGE_HEADER; -typedef struct asl_large_vendor_desc +typedef struct aml_resource_memory24 { - UINT8 DescriptorType; - UINT16 Length; - UINT8 VendorDefined[1]; + AML_RESOURCE_LARGE_HEADER_COMMON + UINT8 Flags; + UINT16 Minimum; + UINT16 Maximum; + UINT16 Alignment; + UINT16 AddressLength; -} ASL_LARGE_VENDOR_DESC; +} AML_RESOURCE_MEMORY24; -typedef struct asl_memory_32_desc +typedef struct aml_resource_vendor_large { - UINT8 DescriptorType; - UINT16 Length; - UINT8 Information; - UINT32 AddressMin; - UINT32 AddressMax; - UINT32 Alignment; - UINT32 RangeLength; + AML_RESOURCE_LARGE_HEADER_COMMON -} ASL_MEMORY_32_DESC; +} AML_RESOURCE_VENDOR_LARGE; -typedef struct asl_fixed_memory_32_desc +typedef struct aml_resource_memory32 { - UINT8 DescriptorType; - UINT16 Length; - UINT8 Information; - UINT32 BaseAddress; - UINT32 RangeLength; + AML_RESOURCE_LARGE_HEADER_COMMON + UINT8 Flags; + UINT32 Minimum; + UINT32 Maximum; + UINT32 Alignment; + UINT32 AddressLength; -} ASL_FIXED_MEMORY_32_DESC; +} AML_RESOURCE_MEMORY32; -typedef struct asl_qword_address_desc +typedef struct aml_resource_fixed_memory32 { - UINT8 DescriptorType; - UINT16 Length; - UINT8 ResourceType; + AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; + UINT32 Address; + UINT32 AddressLength; + +} AML_RESOURCE_FIXED_MEMORY32; + + +#define AML_RESOURCE_ADDRESS_COMMON \ + UINT8 ResourceType; \ + UINT8 Flags; \ UINT8 SpecificFlags; + + +typedef struct aml_resource_address +{ + AML_RESOURCE_LARGE_HEADER_COMMON + AML_RESOURCE_ADDRESS_COMMON + +} AML_RESOURCE_ADDRESS; + + +typedef struct aml_resource_extended_address64 +{ + AML_RESOURCE_LARGE_HEADER_COMMON + AML_RESOURCE_ADDRESS_COMMON + UINT8 RevisionID; + UINT8 Reserved; UINT64 Granularity; - UINT64 AddressMin; - UINT64 AddressMax; + UINT64 Minimum; + UINT64 Maximum; UINT64 TranslationOffset; UINT64 AddressLength; - UINT8 OptionalFields[2]; + UINT64 TypeSpecific; -} ASL_QWORD_ADDRESS_DESC; +} AML_RESOURCE_EXTENDED_ADDRESS64; +#define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ -typedef struct asl_dword_address_desc + +typedef struct aml_resource_address64 { - UINT8 DescriptorType; - UINT16 Length; - UINT8 ResourceType; - UINT8 Flags; - UINT8 SpecificFlags; + AML_RESOURCE_LARGE_HEADER_COMMON + AML_RESOURCE_ADDRESS_COMMON + UINT64 Granularity; + UINT64 Minimum; + UINT64 Maximum; + UINT64 TranslationOffset; + UINT64 AddressLength; + +} AML_RESOURCE_ADDRESS64; + + +typedef struct aml_resource_address32 +{ + AML_RESOURCE_LARGE_HEADER_COMMON + AML_RESOURCE_ADDRESS_COMMON UINT32 Granularity; - UINT32 AddressMin; - UINT32 AddressMax; + UINT32 Minimum; + UINT32 Maximum; UINT32 TranslationOffset; UINT32 AddressLength; - UINT8 OptionalFields[2]; -} ASL_DWORD_ADDRESS_DESC; +} AML_RESOURCE_ADDRESS32; -typedef struct asl_word_address_desc +typedef struct aml_resource_address16 { - UINT8 DescriptorType; - UINT16 Length; - UINT8 ResourceType; - UINT8 Flags; - UINT8 SpecificFlags; + AML_RESOURCE_LARGE_HEADER_COMMON + AML_RESOURCE_ADDRESS_COMMON UINT16 Granularity; - UINT16 AddressMin; - UINT16 AddressMax; + UINT16 Minimum; + UINT16 Maximum; UINT16 TranslationOffset; UINT16 AddressLength; - UINT8 OptionalFields[2]; -} ASL_WORD_ADDRESS_DESC; +} AML_RESOURCE_ADDRESS16; -typedef struct asl_extended_xrupt_desc +typedef struct aml_resource_extended_irq { - UINT8 DescriptorType; - UINT16 Length; + AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; - UINT8 TableLength; - UINT32 InterruptNumber[1]; + UINT8 InterruptCount; + UINT32 Interrupts[1]; /* ResSourceIndex, ResSource optional fields follow */ -} ASL_EXTENDED_XRUPT_DESC; +} AML_RESOURCE_EXTENDED_IRQ; -typedef struct asl_general_register_desc +typedef struct aml_resource_generic_register { - UINT8 DescriptorType; - UINT16 Length; + AML_RESOURCE_LARGE_HEADER_COMMON UINT8 AddressSpaceId; UINT8 BitWidth; UINT8 BitOffset; - UINT8 Reserved; + UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ UINT64 Address; -} ASL_GENERAL_REGISTER_DESC; +} AML_RESOURCE_GENERIC_REGISTER; /* restore default alignment */ @@ -392,31 +431,45 @@ typedef struct asl_general_register_desc /* Union of all resource descriptors, so we can allocate the worst case */ -typedef union asl_resource_desc +typedef union aml_resource { - ASL_IRQ_FORMAT_DESC Irq; - ASL_DMA_FORMAT_DESC Dma; - ASL_START_DEPENDENT_DESC Std; - ASL_END_DEPENDENT_DESC End; - ASL_IO_PORT_DESC Iop; - ASL_FIXED_IO_PORT_DESC Fio; - ASL_SMALL_VENDOR_DESC Smv; - ASL_END_TAG_DESC Et; - - ASL_MEMORY_24_DESC M24; - ASL_LARGE_VENDOR_DESC Lgv; - ASL_MEMORY_32_DESC M32; - ASL_FIXED_MEMORY_32_DESC F32; - ASL_QWORD_ADDRESS_DESC Qas; - ASL_DWORD_ADDRESS_DESC Das; - ASL_WORD_ADDRESS_DESC Was; - ASL_EXTENDED_XRUPT_DESC Exx; - ASL_GENERAL_REGISTER_DESC Grg; - UINT32 U32Item; - UINT16 U16Item; - UINT8 U8Item; - -} ASL_RESOURCE_DESC; + /* Descriptor headers */ + + AML_RESOURCE_SMALL_HEADER SmallHeader; + AML_RESOURCE_LARGE_HEADER LargeHeader; + + /* Small resource descriptors */ + + AML_RESOURCE_IRQ Irq; + AML_RESOURCE_DMA Dma; + AML_RESOURCE_START_DEPENDENT StartDpf; + AML_RESOURCE_END_DEPENDENT EndDpf; + AML_RESOURCE_IO Io; + AML_RESOURCE_FIXED_IO FixedIo; + AML_RESOURCE_VENDOR_SMALL VendorSmall; + AML_RESOURCE_END_TAG EndTag; + + /* Large resource descriptors */ + + AML_RESOURCE_MEMORY24 Memory24; + AML_RESOURCE_GENERIC_REGISTER GenericReg; + AML_RESOURCE_VENDOR_LARGE VendorLarge; + AML_RESOURCE_MEMORY32 Memory32; + AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; + AML_RESOURCE_ADDRESS16 Address16; + AML_RESOURCE_ADDRESS32 Address32; + AML_RESOURCE_ADDRESS64 Address64; + AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; + AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; + + /* Utility overlays */ + + AML_RESOURCE_ADDRESS Address; + UINT32 U32Item; + UINT16 U16Item; + UINT8 U8Item; + +} AML_RESOURCE; #endif |