Home | History | Annotate | Line # | Download | only in include
amlresrc.h revision 1.1.1.2.2.2
      1  1.1.1.2.2.2  bouyer 
      2  1.1.1.2.2.2  bouyer /******************************************************************************
      3  1.1.1.2.2.2  bouyer  *
      4  1.1.1.2.2.2  bouyer  * Module Name: amlresrc.h - AML resource descriptors
      5  1.1.1.2.2.2  bouyer  *
      6  1.1.1.2.2.2  bouyer  *****************************************************************************/
      7  1.1.1.2.2.2  bouyer 
      8  1.1.1.2.2.2  bouyer /*
      9  1.1.1.2.2.2  bouyer  * Copyright (C) 2000 - 2011, Intel Corp.
     10  1.1.1.2.2.2  bouyer  * All rights reserved.
     11  1.1.1.2.2.2  bouyer  *
     12  1.1.1.2.2.2  bouyer  * Redistribution and use in source and binary forms, with or without
     13  1.1.1.2.2.2  bouyer  * modification, are permitted provided that the following conditions
     14  1.1.1.2.2.2  bouyer  * are met:
     15  1.1.1.2.2.2  bouyer  * 1. Redistributions of source code must retain the above copyright
     16  1.1.1.2.2.2  bouyer  *    notice, this list of conditions, and the following disclaimer,
     17  1.1.1.2.2.2  bouyer  *    without modification.
     18  1.1.1.2.2.2  bouyer  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     19  1.1.1.2.2.2  bouyer  *    substantially similar to the "NO WARRANTY" disclaimer below
     20  1.1.1.2.2.2  bouyer  *    ("Disclaimer") and any redistribution must be conditioned upon
     21  1.1.1.2.2.2  bouyer  *    including a substantially similar Disclaimer requirement for further
     22  1.1.1.2.2.2  bouyer  *    binary redistribution.
     23  1.1.1.2.2.2  bouyer  * 3. Neither the names of the above-listed copyright holders nor the names
     24  1.1.1.2.2.2  bouyer  *    of any contributors may be used to endorse or promote products derived
     25  1.1.1.2.2.2  bouyer  *    from this software without specific prior written permission.
     26  1.1.1.2.2.2  bouyer  *
     27  1.1.1.2.2.2  bouyer  * Alternatively, this software may be distributed under the terms of the
     28  1.1.1.2.2.2  bouyer  * GNU General Public License ("GPL") version 2 as published by the Free
     29  1.1.1.2.2.2  bouyer  * Software Foundation.
     30  1.1.1.2.2.2  bouyer  *
     31  1.1.1.2.2.2  bouyer  * NO WARRANTY
     32  1.1.1.2.2.2  bouyer  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     33  1.1.1.2.2.2  bouyer  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     34  1.1.1.2.2.2  bouyer  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     35  1.1.1.2.2.2  bouyer  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     36  1.1.1.2.2.2  bouyer  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     37  1.1.1.2.2.2  bouyer  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     38  1.1.1.2.2.2  bouyer  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     39  1.1.1.2.2.2  bouyer  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     40  1.1.1.2.2.2  bouyer  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     41  1.1.1.2.2.2  bouyer  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     42  1.1.1.2.2.2  bouyer  * POSSIBILITY OF SUCH DAMAGES.
     43  1.1.1.2.2.2  bouyer  */
     44  1.1.1.2.2.2  bouyer 
     45  1.1.1.2.2.2  bouyer /* acpisrc:StructDefs -- for acpisrc conversion */
     46  1.1.1.2.2.2  bouyer 
     47  1.1.1.2.2.2  bouyer #ifndef __AMLRESRC_H
     48  1.1.1.2.2.2  bouyer #define __AMLRESRC_H
     49  1.1.1.2.2.2  bouyer 
     50  1.1.1.2.2.2  bouyer 
     51  1.1.1.2.2.2  bouyer /*
     52  1.1.1.2.2.2  bouyer  * Resource descriptor tags, as defined in the ACPI specification.
     53  1.1.1.2.2.2  bouyer  * Used to symbolically reference fields within a descriptor.
     54  1.1.1.2.2.2  bouyer  */
     55  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_ADDRESS                     "_ADR"
     56  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_ALIGNMENT                   "_ALN"
     57  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_ADDRESSSPACE                "_ASI"
     58  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_ACCESSSIZE                  "_ASZ"
     59  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES      "_ATT"
     60  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_BASEADDRESS                 "_BAS"
     61  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_BUSMASTER                   "_BM_"  /* Master(1), Slave(0) */
     62  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_DECODE                      "_DEC"
     63  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_DMA                         "_DMA"
     64  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_DMATYPE                     "_TYP"  /* Compatible(0), A(1), B(2), F(3) */
     65  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_GRANULARITY                 "_GRA"
     66  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_INTERRUPT                   "_INT"
     67  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_INTERRUPTLEVEL              "_LL_"  /* ActiveLo(1), ActiveHi(0) */
     68  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_INTERRUPTSHARE              "_SHR"  /* Shareable(1), NoShare(0) */
     69  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_INTERRUPTTYPE               "_HE_"  /* Edge(1), Level(0) */
     70  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_LENGTH                      "_LEN"
     71  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MEMATTRIBUTES               "_MTP"  /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
     72  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MEMTYPE                     "_MEM"  /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
     73  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MAXADDR                     "_MAX"
     74  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MINADDR                     "_MIN"
     75  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MAXTYPE                     "_MAF"
     76  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_MINTYPE                     "_MIF"
     77  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_REGISTERBITOFFSET           "_RBO"
     78  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_REGISTERBITWIDTH            "_RBW"
     79  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_RANGETYPE                   "_RNG"
     80  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_READWRITETYPE               "_RW_"  /* ReadOnly(0), Writeable (1) */
     81  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_TRANSLATION                 "_TRA"
     82  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_TRANSTYPE                   "_TRS"  /* Sparse(1), Dense(0) */
     83  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_TYPE                        "_TTP"  /* Translation(1), Static (0) */
     84  1.1.1.2.2.2  bouyer #define ACPI_RESTAG_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
     85  1.1.1.2.2.2  bouyer 
     86  1.1.1.2.2.2  bouyer 
     87  1.1.1.2.2.2  bouyer /* Default sizes for "small" resource descriptors */
     88  1.1.1.2.2.2  bouyer 
     89  1.1.1.2.2.2  bouyer #define ASL_RDESC_IRQ_SIZE                      0x02
     90  1.1.1.2.2.2  bouyer #define ASL_RDESC_DMA_SIZE                      0x02
     91  1.1.1.2.2.2  bouyer #define ASL_RDESC_ST_DEPEND_SIZE                0x00
     92  1.1.1.2.2.2  bouyer #define ASL_RDESC_END_DEPEND_SIZE               0x00
     93  1.1.1.2.2.2  bouyer #define ASL_RDESC_IO_SIZE                       0x07
     94  1.1.1.2.2.2  bouyer #define ASL_RDESC_FIXED_IO_SIZE                 0x03
     95  1.1.1.2.2.2  bouyer #define ASL_RDESC_END_TAG_SIZE                  0x01
     96  1.1.1.2.2.2  bouyer 
     97  1.1.1.2.2.2  bouyer 
     98  1.1.1.2.2.2  bouyer typedef struct asl_resource_node
     99  1.1.1.2.2.2  bouyer {
    100  1.1.1.2.2.2  bouyer     UINT32                          BufferLength;
    101  1.1.1.2.2.2  bouyer     void                            *Buffer;
    102  1.1.1.2.2.2  bouyer     struct asl_resource_node        *Next;
    103  1.1.1.2.2.2  bouyer 
    104  1.1.1.2.2.2  bouyer } ASL_RESOURCE_NODE;
    105  1.1.1.2.2.2  bouyer 
    106  1.1.1.2.2.2  bouyer 
    107  1.1.1.2.2.2  bouyer /* Macros used to generate AML resource length fields */
    108  1.1.1.2.2.2  bouyer 
    109  1.1.1.2.2.2  bouyer #define ACPI_AML_SIZE_LARGE(r)      (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
    110  1.1.1.2.2.2  bouyer #define ACPI_AML_SIZE_SMALL(r)      (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
    111  1.1.1.2.2.2  bouyer 
    112  1.1.1.2.2.2  bouyer /*
    113  1.1.1.2.2.2  bouyer  * Resource descriptors defined in the ACPI specification.
    114  1.1.1.2.2.2  bouyer  *
    115  1.1.1.2.2.2  bouyer  * Packing/alignment must be BYTE because these descriptors
    116  1.1.1.2.2.2  bouyer  * are used to overlay the raw AML byte stream.
    117  1.1.1.2.2.2  bouyer  */
    118  1.1.1.2.2.2  bouyer #pragma pack(1)
    119  1.1.1.2.2.2  bouyer 
    120  1.1.1.2.2.2  bouyer /*
    121  1.1.1.2.2.2  bouyer  * SMALL descriptors
    122  1.1.1.2.2.2  bouyer  */
    123  1.1.1.2.2.2  bouyer #define AML_RESOURCE_SMALL_HEADER_COMMON \
    124  1.1.1.2.2.2  bouyer     UINT8                           DescriptorType;
    125  1.1.1.2.2.2  bouyer 
    126  1.1.1.2.2.2  bouyer typedef struct aml_resource_small_header
    127  1.1.1.2.2.2  bouyer {
    128  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    129  1.1.1.2.2.2  bouyer 
    130  1.1.1.2.2.2  bouyer } AML_RESOURCE_SMALL_HEADER;
    131  1.1.1.2.2.2  bouyer 
    132  1.1.1.2.2.2  bouyer 
    133  1.1.1.2.2.2  bouyer typedef struct aml_resource_irq
    134  1.1.1.2.2.2  bouyer {
    135  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    136  1.1.1.2.2.2  bouyer     UINT16                          IrqMask;
    137  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    138  1.1.1.2.2.2  bouyer 
    139  1.1.1.2.2.2  bouyer } AML_RESOURCE_IRQ;
    140  1.1.1.2.2.2  bouyer 
    141  1.1.1.2.2.2  bouyer 
    142  1.1.1.2.2.2  bouyer typedef struct aml_resource_irq_noflags
    143  1.1.1.2.2.2  bouyer {
    144  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    145  1.1.1.2.2.2  bouyer     UINT16                          IrqMask;
    146  1.1.1.2.2.2  bouyer 
    147  1.1.1.2.2.2  bouyer } AML_RESOURCE_IRQ_NOFLAGS;
    148  1.1.1.2.2.2  bouyer 
    149  1.1.1.2.2.2  bouyer 
    150  1.1.1.2.2.2  bouyer typedef struct aml_resource_dma
    151  1.1.1.2.2.2  bouyer {
    152  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    153  1.1.1.2.2.2  bouyer     UINT8                           DmaChannelMask;
    154  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    155  1.1.1.2.2.2  bouyer 
    156  1.1.1.2.2.2  bouyer } AML_RESOURCE_DMA;
    157  1.1.1.2.2.2  bouyer 
    158  1.1.1.2.2.2  bouyer 
    159  1.1.1.2.2.2  bouyer typedef struct aml_resource_start_dependent
    160  1.1.1.2.2.2  bouyer {
    161  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    162  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    163  1.1.1.2.2.2  bouyer 
    164  1.1.1.2.2.2  bouyer } AML_RESOURCE_START_DEPENDENT;
    165  1.1.1.2.2.2  bouyer 
    166  1.1.1.2.2.2  bouyer 
    167  1.1.1.2.2.2  bouyer typedef struct aml_resource_start_dependent_noprio
    168  1.1.1.2.2.2  bouyer {
    169  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    170  1.1.1.2.2.2  bouyer 
    171  1.1.1.2.2.2  bouyer } AML_RESOURCE_START_DEPENDENT_NOPRIO;
    172  1.1.1.2.2.2  bouyer 
    173  1.1.1.2.2.2  bouyer 
    174  1.1.1.2.2.2  bouyer typedef struct aml_resource_end_dependent
    175  1.1.1.2.2.2  bouyer {
    176  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    177  1.1.1.2.2.2  bouyer 
    178  1.1.1.2.2.2  bouyer } AML_RESOURCE_END_DEPENDENT;
    179  1.1.1.2.2.2  bouyer 
    180  1.1.1.2.2.2  bouyer 
    181  1.1.1.2.2.2  bouyer typedef struct aml_resource_io
    182  1.1.1.2.2.2  bouyer {
    183  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    184  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    185  1.1.1.2.2.2  bouyer     UINT16                          Minimum;
    186  1.1.1.2.2.2  bouyer     UINT16                          Maximum;
    187  1.1.1.2.2.2  bouyer     UINT8                           Alignment;
    188  1.1.1.2.2.2  bouyer     UINT8                           AddressLength;
    189  1.1.1.2.2.2  bouyer 
    190  1.1.1.2.2.2  bouyer } AML_RESOURCE_IO;
    191  1.1.1.2.2.2  bouyer 
    192  1.1.1.2.2.2  bouyer 
    193  1.1.1.2.2.2  bouyer typedef struct aml_resource_fixed_io
    194  1.1.1.2.2.2  bouyer {
    195  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    196  1.1.1.2.2.2  bouyer     UINT16                          Address;
    197  1.1.1.2.2.2  bouyer     UINT8                           AddressLength;
    198  1.1.1.2.2.2  bouyer 
    199  1.1.1.2.2.2  bouyer } AML_RESOURCE_FIXED_IO;
    200  1.1.1.2.2.2  bouyer 
    201  1.1.1.2.2.2  bouyer 
    202  1.1.1.2.2.2  bouyer typedef struct aml_resource_vendor_small
    203  1.1.1.2.2.2  bouyer {
    204  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    205  1.1.1.2.2.2  bouyer 
    206  1.1.1.2.2.2  bouyer } AML_RESOURCE_VENDOR_SMALL;
    207  1.1.1.2.2.2  bouyer 
    208  1.1.1.2.2.2  bouyer 
    209  1.1.1.2.2.2  bouyer typedef struct aml_resource_end_tag
    210  1.1.1.2.2.2  bouyer {
    211  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER_COMMON
    212  1.1.1.2.2.2  bouyer     UINT8                           Checksum;
    213  1.1.1.2.2.2  bouyer 
    214  1.1.1.2.2.2  bouyer } AML_RESOURCE_END_TAG;
    215  1.1.1.2.2.2  bouyer 
    216  1.1.1.2.2.2  bouyer 
    217  1.1.1.2.2.2  bouyer /*
    218  1.1.1.2.2.2  bouyer  * LARGE descriptors
    219  1.1.1.2.2.2  bouyer  */
    220  1.1.1.2.2.2  bouyer #define AML_RESOURCE_LARGE_HEADER_COMMON \
    221  1.1.1.2.2.2  bouyer     UINT8                           DescriptorType;\
    222  1.1.1.2.2.2  bouyer     UINT16                          ResourceLength;
    223  1.1.1.2.2.2  bouyer 
    224  1.1.1.2.2.2  bouyer typedef struct aml_resource_large_header
    225  1.1.1.2.2.2  bouyer {
    226  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    227  1.1.1.2.2.2  bouyer 
    228  1.1.1.2.2.2  bouyer } AML_RESOURCE_LARGE_HEADER;
    229  1.1.1.2.2.2  bouyer 
    230  1.1.1.2.2.2  bouyer 
    231  1.1.1.2.2.2  bouyer /* General Flags for address space resource descriptors */
    232  1.1.1.2.2.2  bouyer 
    233  1.1.1.2.2.2  bouyer #define ACPI_RESOURCE_FLAG_DEC      2
    234  1.1.1.2.2.2  bouyer #define ACPI_RESOURCE_FLAG_MIF      4
    235  1.1.1.2.2.2  bouyer #define ACPI_RESOURCE_FLAG_MAF      8
    236  1.1.1.2.2.2  bouyer 
    237  1.1.1.2.2.2  bouyer typedef struct aml_resource_memory24
    238  1.1.1.2.2.2  bouyer {
    239  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    240  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    241  1.1.1.2.2.2  bouyer     UINT16                          Minimum;
    242  1.1.1.2.2.2  bouyer     UINT16                          Maximum;
    243  1.1.1.2.2.2  bouyer     UINT16                          Alignment;
    244  1.1.1.2.2.2  bouyer     UINT16                          AddressLength;
    245  1.1.1.2.2.2  bouyer 
    246  1.1.1.2.2.2  bouyer } AML_RESOURCE_MEMORY24;
    247  1.1.1.2.2.2  bouyer 
    248  1.1.1.2.2.2  bouyer 
    249  1.1.1.2.2.2  bouyer typedef struct aml_resource_vendor_large
    250  1.1.1.2.2.2  bouyer {
    251  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    252  1.1.1.2.2.2  bouyer 
    253  1.1.1.2.2.2  bouyer } AML_RESOURCE_VENDOR_LARGE;
    254  1.1.1.2.2.2  bouyer 
    255  1.1.1.2.2.2  bouyer 
    256  1.1.1.2.2.2  bouyer typedef struct aml_resource_memory32
    257  1.1.1.2.2.2  bouyer {
    258  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    259  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    260  1.1.1.2.2.2  bouyer     UINT32                          Minimum;
    261  1.1.1.2.2.2  bouyer     UINT32                          Maximum;
    262  1.1.1.2.2.2  bouyer     UINT32                          Alignment;
    263  1.1.1.2.2.2  bouyer     UINT32                          AddressLength;
    264  1.1.1.2.2.2  bouyer 
    265  1.1.1.2.2.2  bouyer } AML_RESOURCE_MEMORY32;
    266  1.1.1.2.2.2  bouyer 
    267  1.1.1.2.2.2  bouyer 
    268  1.1.1.2.2.2  bouyer typedef struct aml_resource_fixed_memory32
    269  1.1.1.2.2.2  bouyer {
    270  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    271  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    272  1.1.1.2.2.2  bouyer     UINT32                          Address;
    273  1.1.1.2.2.2  bouyer     UINT32                          AddressLength;
    274  1.1.1.2.2.2  bouyer 
    275  1.1.1.2.2.2  bouyer } AML_RESOURCE_FIXED_MEMORY32;
    276  1.1.1.2.2.2  bouyer 
    277  1.1.1.2.2.2  bouyer 
    278  1.1.1.2.2.2  bouyer #define AML_RESOURCE_ADDRESS_COMMON \
    279  1.1.1.2.2.2  bouyer     UINT8                           ResourceType; \
    280  1.1.1.2.2.2  bouyer     UINT8                           Flags; \
    281  1.1.1.2.2.2  bouyer     UINT8                           SpecificFlags;
    282  1.1.1.2.2.2  bouyer 
    283  1.1.1.2.2.2  bouyer 
    284  1.1.1.2.2.2  bouyer typedef struct aml_resource_address
    285  1.1.1.2.2.2  bouyer {
    286  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    287  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS_COMMON
    288  1.1.1.2.2.2  bouyer 
    289  1.1.1.2.2.2  bouyer } AML_RESOURCE_ADDRESS;
    290  1.1.1.2.2.2  bouyer 
    291  1.1.1.2.2.2  bouyer 
    292  1.1.1.2.2.2  bouyer typedef struct aml_resource_extended_address64
    293  1.1.1.2.2.2  bouyer {
    294  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    295  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS_COMMON
    296  1.1.1.2.2.2  bouyer     UINT8                           RevisionID;
    297  1.1.1.2.2.2  bouyer     UINT8                           Reserved;
    298  1.1.1.2.2.2  bouyer     UINT64                          Granularity;
    299  1.1.1.2.2.2  bouyer     UINT64                          Minimum;
    300  1.1.1.2.2.2  bouyer     UINT64                          Maximum;
    301  1.1.1.2.2.2  bouyer     UINT64                          TranslationOffset;
    302  1.1.1.2.2.2  bouyer     UINT64                          AddressLength;
    303  1.1.1.2.2.2  bouyer     UINT64                          TypeSpecific;
    304  1.1.1.2.2.2  bouyer 
    305  1.1.1.2.2.2  bouyer } AML_RESOURCE_EXTENDED_ADDRESS64;
    306  1.1.1.2.2.2  bouyer 
    307  1.1.1.2.2.2  bouyer #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION          1       /* ACPI 3.0 */
    308  1.1.1.2.2.2  bouyer 
    309  1.1.1.2.2.2  bouyer 
    310  1.1.1.2.2.2  bouyer typedef struct aml_resource_address64
    311  1.1.1.2.2.2  bouyer {
    312  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    313  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS_COMMON
    314  1.1.1.2.2.2  bouyer     UINT64                          Granularity;
    315  1.1.1.2.2.2  bouyer     UINT64                          Minimum;
    316  1.1.1.2.2.2  bouyer     UINT64                          Maximum;
    317  1.1.1.2.2.2  bouyer     UINT64                          TranslationOffset;
    318  1.1.1.2.2.2  bouyer     UINT64                          AddressLength;
    319  1.1.1.2.2.2  bouyer 
    320  1.1.1.2.2.2  bouyer } AML_RESOURCE_ADDRESS64;
    321  1.1.1.2.2.2  bouyer 
    322  1.1.1.2.2.2  bouyer 
    323  1.1.1.2.2.2  bouyer typedef struct aml_resource_address32
    324  1.1.1.2.2.2  bouyer {
    325  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    326  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS_COMMON
    327  1.1.1.2.2.2  bouyer     UINT32                          Granularity;
    328  1.1.1.2.2.2  bouyer     UINT32                          Minimum;
    329  1.1.1.2.2.2  bouyer     UINT32                          Maximum;
    330  1.1.1.2.2.2  bouyer     UINT32                          TranslationOffset;
    331  1.1.1.2.2.2  bouyer     UINT32                          AddressLength;
    332  1.1.1.2.2.2  bouyer 
    333  1.1.1.2.2.2  bouyer } AML_RESOURCE_ADDRESS32;
    334  1.1.1.2.2.2  bouyer 
    335  1.1.1.2.2.2  bouyer 
    336  1.1.1.2.2.2  bouyer typedef struct aml_resource_address16
    337  1.1.1.2.2.2  bouyer {
    338  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    339  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS_COMMON
    340  1.1.1.2.2.2  bouyer     UINT16                          Granularity;
    341  1.1.1.2.2.2  bouyer     UINT16                          Minimum;
    342  1.1.1.2.2.2  bouyer     UINT16                          Maximum;
    343  1.1.1.2.2.2  bouyer     UINT16                          TranslationOffset;
    344  1.1.1.2.2.2  bouyer     UINT16                          AddressLength;
    345  1.1.1.2.2.2  bouyer 
    346  1.1.1.2.2.2  bouyer } AML_RESOURCE_ADDRESS16;
    347  1.1.1.2.2.2  bouyer 
    348  1.1.1.2.2.2  bouyer 
    349  1.1.1.2.2.2  bouyer typedef struct aml_resource_extended_irq
    350  1.1.1.2.2.2  bouyer {
    351  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    352  1.1.1.2.2.2  bouyer     UINT8                           Flags;
    353  1.1.1.2.2.2  bouyer     UINT8                           InterruptCount;
    354  1.1.1.2.2.2  bouyer     UINT32                          Interrupts[1];
    355  1.1.1.2.2.2  bouyer     /* ResSourceIndex, ResSource optional fields follow */
    356  1.1.1.2.2.2  bouyer 
    357  1.1.1.2.2.2  bouyer } AML_RESOURCE_EXTENDED_IRQ;
    358  1.1.1.2.2.2  bouyer 
    359  1.1.1.2.2.2  bouyer 
    360  1.1.1.2.2.2  bouyer typedef struct aml_resource_generic_register
    361  1.1.1.2.2.2  bouyer {
    362  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER_COMMON
    363  1.1.1.2.2.2  bouyer     UINT8                           AddressSpaceId;
    364  1.1.1.2.2.2  bouyer     UINT8                           BitWidth;
    365  1.1.1.2.2.2  bouyer     UINT8                           BitOffset;
    366  1.1.1.2.2.2  bouyer     UINT8                           AccessSize; /* ACPI 3.0, was previously Reserved */
    367  1.1.1.2.2.2  bouyer     UINT64                          Address;
    368  1.1.1.2.2.2  bouyer 
    369  1.1.1.2.2.2  bouyer } AML_RESOURCE_GENERIC_REGISTER;
    370  1.1.1.2.2.2  bouyer 
    371  1.1.1.2.2.2  bouyer /* restore default alignment */
    372  1.1.1.2.2.2  bouyer 
    373  1.1.1.2.2.2  bouyer #pragma pack()
    374  1.1.1.2.2.2  bouyer 
    375  1.1.1.2.2.2  bouyer /* Union of all resource descriptors, so we can allocate the worst case */
    376  1.1.1.2.2.2  bouyer 
    377  1.1.1.2.2.2  bouyer typedef union aml_resource
    378  1.1.1.2.2.2  bouyer {
    379  1.1.1.2.2.2  bouyer     /* Descriptor headers */
    380  1.1.1.2.2.2  bouyer 
    381  1.1.1.2.2.2  bouyer     UINT8                                   DescriptorType;
    382  1.1.1.2.2.2  bouyer     AML_RESOURCE_SMALL_HEADER               SmallHeader;
    383  1.1.1.2.2.2  bouyer     AML_RESOURCE_LARGE_HEADER               LargeHeader;
    384  1.1.1.2.2.2  bouyer 
    385  1.1.1.2.2.2  bouyer     /* Small resource descriptors */
    386  1.1.1.2.2.2  bouyer 
    387  1.1.1.2.2.2  bouyer     AML_RESOURCE_IRQ                        Irq;
    388  1.1.1.2.2.2  bouyer     AML_RESOURCE_DMA                        Dma;
    389  1.1.1.2.2.2  bouyer     AML_RESOURCE_START_DEPENDENT            StartDpf;
    390  1.1.1.2.2.2  bouyer     AML_RESOURCE_END_DEPENDENT              EndDpf;
    391  1.1.1.2.2.2  bouyer     AML_RESOURCE_IO                         Io;
    392  1.1.1.2.2.2  bouyer     AML_RESOURCE_FIXED_IO                   FixedIo;
    393  1.1.1.2.2.2  bouyer     AML_RESOURCE_VENDOR_SMALL               VendorSmall;
    394  1.1.1.2.2.2  bouyer     AML_RESOURCE_END_TAG                    EndTag;
    395  1.1.1.2.2.2  bouyer 
    396  1.1.1.2.2.2  bouyer     /* Large resource descriptors */
    397  1.1.1.2.2.2  bouyer 
    398  1.1.1.2.2.2  bouyer     AML_RESOURCE_MEMORY24                   Memory24;
    399  1.1.1.2.2.2  bouyer     AML_RESOURCE_GENERIC_REGISTER           GenericReg;
    400  1.1.1.2.2.2  bouyer     AML_RESOURCE_VENDOR_LARGE               VendorLarge;
    401  1.1.1.2.2.2  bouyer     AML_RESOURCE_MEMORY32                   Memory32;
    402  1.1.1.2.2.2  bouyer     AML_RESOURCE_FIXED_MEMORY32             FixedMemory32;
    403  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS16                  Address16;
    404  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS32                  Address32;
    405  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS64                  Address64;
    406  1.1.1.2.2.2  bouyer     AML_RESOURCE_EXTENDED_ADDRESS64         ExtAddress64;
    407  1.1.1.2.2.2  bouyer     AML_RESOURCE_EXTENDED_IRQ               ExtendedIrq;
    408  1.1.1.2.2.2  bouyer 
    409  1.1.1.2.2.2  bouyer     /* Utility overlays */
    410  1.1.1.2.2.2  bouyer 
    411  1.1.1.2.2.2  bouyer     AML_RESOURCE_ADDRESS                    Address;
    412  1.1.1.2.2.2  bouyer     UINT32                                  DwordItem;
    413  1.1.1.2.2.2  bouyer     UINT16                                  WordItem;
    414  1.1.1.2.2.2  bouyer     UINT8                                   ByteItem;
    415  1.1.1.2.2.2  bouyer 
    416  1.1.1.2.2.2  bouyer } AML_RESOURCE;
    417  1.1.1.2.2.2  bouyer 
    418  1.1.1.2.2.2  bouyer #endif
    419  1.1.1.2.2.2  bouyer 
    420