Home | History | Annotate | Line # | Download | only in include
amlresrc.h revision 1.1.1.3
      1 /******************************************************************************
      2  *
      3  * Module Name: amlresrc.h - AML resource descriptors
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2013, Intel Corp.
      9  * All rights reserved.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions, and the following disclaimer,
     16  *    without modification.
     17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  *    including a substantially similar Disclaimer requirement for further
     21  *    binary redistribution.
     22  * 3. Neither the names of the above-listed copyright holders nor the names
     23  *    of any contributors may be used to endorse or promote products derived
     24  *    from this software without specific prior written permission.
     25  *
     26  * Alternatively, this software may be distributed under the terms of the
     27  * GNU General Public License ("GPL") version 2 as published by the Free
     28  * Software Foundation.
     29  *
     30  * NO WARRANTY
     31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  * POSSIBILITY OF SUCH DAMAGES.
     42  */
     43 
     44 /* acpisrc:StructDefs -- for acpisrc conversion */
     45 
     46 #ifndef __AMLRESRC_H
     47 #define __AMLRESRC_H
     48 
     49 
     50 /*
     51  * Resource descriptor tags, as defined in the ACPI specification.
     52  * Used to symbolically reference fields within a descriptor.
     53  */
     54 #define ACPI_RESTAG_ADDRESS                     "_ADR"
     55 #define ACPI_RESTAG_ALIGNMENT                   "_ALN"
     56 #define ACPI_RESTAG_ADDRESSSPACE                "_ASI"
     57 #define ACPI_RESTAG_ACCESSSIZE                  "_ASZ"
     58 #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES      "_ATT"
     59 #define ACPI_RESTAG_BASEADDRESS                 "_BAS"
     60 #define ACPI_RESTAG_BUSMASTER                   "_BM_"  /* Master(1), Slave(0) */
     61 #define ACPI_RESTAG_DEBOUNCETIME                "_DBT"
     62 #define ACPI_RESTAG_DECODE                      "_DEC"
     63 #define ACPI_RESTAG_DEVICEPOLARITY              "_DPL"
     64 #define ACPI_RESTAG_DMA                         "_DMA"
     65 #define ACPI_RESTAG_DMATYPE                     "_TYP"  /* Compatible(0), A(1), B(2), F(3) */
     66 #define ACPI_RESTAG_DRIVESTRENGTH               "_DRS"
     67 #define ACPI_RESTAG_ENDIANNESS                  "_END"
     68 #define ACPI_RESTAG_FLOWCONTROL                 "_FLC"
     69 #define ACPI_RESTAG_GRANULARITY                 "_GRA"
     70 #define ACPI_RESTAG_INTERRUPT                   "_INT"
     71 #define ACPI_RESTAG_INTERRUPTLEVEL              "_LL_"  /* ActiveLo(1), ActiveHi(0) */
     72 #define ACPI_RESTAG_INTERRUPTSHARE              "_SHR"  /* Shareable(1), NoShare(0) */
     73 #define ACPI_RESTAG_INTERRUPTTYPE               "_HE_"  /* Edge(1), Level(0) */
     74 #define ACPI_RESTAG_IORESTRICTION               "_IOR"
     75 #define ACPI_RESTAG_LENGTH                      "_LEN"
     76 #define ACPI_RESTAG_LINE                        "_LIN"
     77 #define ACPI_RESTAG_MEMATTRIBUTES               "_MTP"  /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
     78 #define ACPI_RESTAG_MEMTYPE                     "_MEM"  /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
     79 #define ACPI_RESTAG_MAXADDR                     "_MAX"
     80 #define ACPI_RESTAG_MINADDR                     "_MIN"
     81 #define ACPI_RESTAG_MAXTYPE                     "_MAF"
     82 #define ACPI_RESTAG_MINTYPE                     "_MIF"
     83 #define ACPI_RESTAG_MODE                        "_MOD"
     84 #define ACPI_RESTAG_PARITY                      "_PAR"
     85 #define ACPI_RESTAG_PHASE                       "_PHA"
     86 #define ACPI_RESTAG_PIN                         "_PIN"
     87 #define ACPI_RESTAG_PINCONFIG                   "_PPI"
     88 #define ACPI_RESTAG_POLARITY                    "_POL"
     89 #define ACPI_RESTAG_REGISTERBITOFFSET           "_RBO"
     90 #define ACPI_RESTAG_REGISTERBITWIDTH            "_RBW"
     91 #define ACPI_RESTAG_RANGETYPE                   "_RNG"
     92 #define ACPI_RESTAG_READWRITETYPE               "_RW_"  /* ReadOnly(0), Writeable (1) */
     93 #define ACPI_RESTAG_LENGTH_RX                   "_RXL"
     94 #define ACPI_RESTAG_LENGTH_TX                   "_TXL"
     95 #define ACPI_RESTAG_SLAVEMODE                   "_SLV"
     96 #define ACPI_RESTAG_SPEED                       "_SPE"
     97 #define ACPI_RESTAG_STOPBITS                    "_STB"
     98 #define ACPI_RESTAG_TRANSLATION                 "_TRA"
     99 #define ACPI_RESTAG_TRANSTYPE                   "_TRS"  /* Sparse(1), Dense(0) */
    100 #define ACPI_RESTAG_TYPE                        "_TTP"  /* Translation(1), Static (0) */
    101 #define ACPI_RESTAG_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
    102 #define ACPI_RESTAG_VENDORDATA                  "_VEN"
    103 
    104 
    105 /* Default sizes for "small" resource descriptors */
    106 
    107 #define ASL_RDESC_IRQ_SIZE                      0x02
    108 #define ASL_RDESC_DMA_SIZE                      0x02
    109 #define ASL_RDESC_ST_DEPEND_SIZE                0x00
    110 #define ASL_RDESC_END_DEPEND_SIZE               0x00
    111 #define ASL_RDESC_IO_SIZE                       0x07
    112 #define ASL_RDESC_FIXED_IO_SIZE                 0x03
    113 #define ASL_RDESC_FIXED_DMA_SIZE                0x05
    114 #define ASL_RDESC_END_TAG_SIZE                  0x01
    115 
    116 
    117 typedef struct asl_resource_node
    118 {
    119     UINT32                          BufferLength;
    120     void                            *Buffer;
    121     struct asl_resource_node        *Next;
    122 
    123 } ASL_RESOURCE_NODE;
    124 
    125 
    126 /* Macros used to generate AML resource length fields */
    127 
    128 #define ACPI_AML_SIZE_LARGE(r)      (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
    129 #define ACPI_AML_SIZE_SMALL(r)      (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
    130 
    131 /*
    132  * Resource descriptors defined in the ACPI specification.
    133  *
    134  * Packing/alignment must be BYTE because these descriptors
    135  * are used to overlay the raw AML byte stream.
    136  */
    137 #pragma pack(1)
    138 
    139 /*
    140  * SMALL descriptors
    141  */
    142 #define AML_RESOURCE_SMALL_HEADER_COMMON \
    143     UINT8                           DescriptorType;
    144 
    145 typedef struct aml_resource_small_header
    146 {
    147     AML_RESOURCE_SMALL_HEADER_COMMON
    148 
    149 } AML_RESOURCE_SMALL_HEADER;
    150 
    151 
    152 typedef struct aml_resource_irq
    153 {
    154     AML_RESOURCE_SMALL_HEADER_COMMON
    155     UINT16                          IrqMask;
    156     UINT8                           Flags;
    157 
    158 } AML_RESOURCE_IRQ;
    159 
    160 
    161 typedef struct aml_resource_irq_noflags
    162 {
    163     AML_RESOURCE_SMALL_HEADER_COMMON
    164     UINT16                          IrqMask;
    165 
    166 } AML_RESOURCE_IRQ_NOFLAGS;
    167 
    168 
    169 typedef struct aml_resource_dma
    170 {
    171     AML_RESOURCE_SMALL_HEADER_COMMON
    172     UINT8                           DmaChannelMask;
    173     UINT8                           Flags;
    174 
    175 } AML_RESOURCE_DMA;
    176 
    177 
    178 typedef struct aml_resource_start_dependent
    179 {
    180     AML_RESOURCE_SMALL_HEADER_COMMON
    181     UINT8                           Flags;
    182 
    183 } AML_RESOURCE_START_DEPENDENT;
    184 
    185 
    186 typedef struct aml_resource_start_dependent_noprio
    187 {
    188     AML_RESOURCE_SMALL_HEADER_COMMON
    189 
    190 } AML_RESOURCE_START_DEPENDENT_NOPRIO;
    191 
    192 
    193 typedef struct aml_resource_end_dependent
    194 {
    195     AML_RESOURCE_SMALL_HEADER_COMMON
    196 
    197 } AML_RESOURCE_END_DEPENDENT;
    198 
    199 
    200 typedef struct aml_resource_io
    201 {
    202     AML_RESOURCE_SMALL_HEADER_COMMON
    203     UINT8                           Flags;
    204     UINT16                          Minimum;
    205     UINT16                          Maximum;
    206     UINT8                           Alignment;
    207     UINT8                           AddressLength;
    208 
    209 } AML_RESOURCE_IO;
    210 
    211 
    212 typedef struct aml_resource_fixed_io
    213 {
    214     AML_RESOURCE_SMALL_HEADER_COMMON
    215     UINT16                          Address;
    216     UINT8                           AddressLength;
    217 
    218 } AML_RESOURCE_FIXED_IO;
    219 
    220 
    221 typedef struct aml_resource_vendor_small
    222 {
    223     AML_RESOURCE_SMALL_HEADER_COMMON
    224 
    225 } AML_RESOURCE_VENDOR_SMALL;
    226 
    227 
    228 typedef struct aml_resource_end_tag
    229 {
    230     AML_RESOURCE_SMALL_HEADER_COMMON
    231     UINT8                           Checksum;
    232 
    233 } AML_RESOURCE_END_TAG;
    234 
    235 
    236 typedef struct aml_resource_fixed_dma
    237 {
    238     AML_RESOURCE_SMALL_HEADER_COMMON
    239     UINT16                          RequestLines;
    240     UINT16                          Channels;
    241     UINT8                           Width;
    242 
    243 } AML_RESOURCE_FIXED_DMA;
    244 
    245 
    246 /*
    247  * LARGE descriptors
    248  */
    249 #define AML_RESOURCE_LARGE_HEADER_COMMON \
    250     UINT8                           DescriptorType;\
    251     UINT16                          ResourceLength;
    252 
    253 typedef struct aml_resource_large_header
    254 {
    255     AML_RESOURCE_LARGE_HEADER_COMMON
    256 
    257 } AML_RESOURCE_LARGE_HEADER;
    258 
    259 
    260 /* General Flags for address space resource descriptors */
    261 
    262 #define ACPI_RESOURCE_FLAG_DEC      2
    263 #define ACPI_RESOURCE_FLAG_MIF      4
    264 #define ACPI_RESOURCE_FLAG_MAF      8
    265 
    266 typedef struct aml_resource_memory24
    267 {
    268     AML_RESOURCE_LARGE_HEADER_COMMON
    269     UINT8                           Flags;
    270     UINT16                          Minimum;
    271     UINT16                          Maximum;
    272     UINT16                          Alignment;
    273     UINT16                          AddressLength;
    274 
    275 } AML_RESOURCE_MEMORY24;
    276 
    277 
    278 typedef struct aml_resource_vendor_large
    279 {
    280     AML_RESOURCE_LARGE_HEADER_COMMON
    281 
    282 } AML_RESOURCE_VENDOR_LARGE;
    283 
    284 
    285 typedef struct aml_resource_memory32
    286 {
    287     AML_RESOURCE_LARGE_HEADER_COMMON
    288     UINT8                           Flags;
    289     UINT32                          Minimum;
    290     UINT32                          Maximum;
    291     UINT32                          Alignment;
    292     UINT32                          AddressLength;
    293 
    294 } AML_RESOURCE_MEMORY32;
    295 
    296 
    297 typedef struct aml_resource_fixed_memory32
    298 {
    299     AML_RESOURCE_LARGE_HEADER_COMMON
    300     UINT8                           Flags;
    301     UINT32                          Address;
    302     UINT32                          AddressLength;
    303 
    304 } AML_RESOURCE_FIXED_MEMORY32;
    305 
    306 
    307 #define AML_RESOURCE_ADDRESS_COMMON \
    308     UINT8                           ResourceType; \
    309     UINT8                           Flags; \
    310     UINT8                           SpecificFlags;
    311 
    312 
    313 typedef struct aml_resource_address
    314 {
    315     AML_RESOURCE_LARGE_HEADER_COMMON
    316     AML_RESOURCE_ADDRESS_COMMON
    317 
    318 } AML_RESOURCE_ADDRESS;
    319 
    320 
    321 typedef struct aml_resource_extended_address64
    322 {
    323     AML_RESOURCE_LARGE_HEADER_COMMON
    324     AML_RESOURCE_ADDRESS_COMMON
    325     UINT8                           RevisionID;
    326     UINT8                           Reserved;
    327     UINT64                          Granularity;
    328     UINT64                          Minimum;
    329     UINT64                          Maximum;
    330     UINT64                          TranslationOffset;
    331     UINT64                          AddressLength;
    332     UINT64                          TypeSpecific;
    333 
    334 } AML_RESOURCE_EXTENDED_ADDRESS64;
    335 
    336 #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION          1       /* ACPI 3.0 */
    337 
    338 
    339 typedef struct aml_resource_address64
    340 {
    341     AML_RESOURCE_LARGE_HEADER_COMMON
    342     AML_RESOURCE_ADDRESS_COMMON
    343     UINT64                          Granularity;
    344     UINT64                          Minimum;
    345     UINT64                          Maximum;
    346     UINT64                          TranslationOffset;
    347     UINT64                          AddressLength;
    348 
    349 } AML_RESOURCE_ADDRESS64;
    350 
    351 
    352 typedef struct aml_resource_address32
    353 {
    354     AML_RESOURCE_LARGE_HEADER_COMMON
    355     AML_RESOURCE_ADDRESS_COMMON
    356     UINT32                          Granularity;
    357     UINT32                          Minimum;
    358     UINT32                          Maximum;
    359     UINT32                          TranslationOffset;
    360     UINT32                          AddressLength;
    361 
    362 } AML_RESOURCE_ADDRESS32;
    363 
    364 
    365 typedef struct aml_resource_address16
    366 {
    367     AML_RESOURCE_LARGE_HEADER_COMMON
    368     AML_RESOURCE_ADDRESS_COMMON
    369     UINT16                          Granularity;
    370     UINT16                          Minimum;
    371     UINT16                          Maximum;
    372     UINT16                          TranslationOffset;
    373     UINT16                          AddressLength;
    374 
    375 } AML_RESOURCE_ADDRESS16;
    376 
    377 
    378 typedef struct aml_resource_extended_irq
    379 {
    380     AML_RESOURCE_LARGE_HEADER_COMMON
    381     UINT8                           Flags;
    382     UINT8                           InterruptCount;
    383     UINT32                          Interrupts[1];
    384     /* ResSourceIndex, ResSource optional fields follow */
    385 
    386 } AML_RESOURCE_EXTENDED_IRQ;
    387 
    388 
    389 typedef struct aml_resource_generic_register
    390 {
    391     AML_RESOURCE_LARGE_HEADER_COMMON
    392     UINT8                           AddressSpaceId;
    393     UINT8                           BitWidth;
    394     UINT8                           BitOffset;
    395     UINT8                           AccessSize; /* ACPI 3.0, was previously Reserved */
    396     UINT64                          Address;
    397 
    398 } AML_RESOURCE_GENERIC_REGISTER;
    399 
    400 
    401 /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */
    402 
    403 typedef struct aml_resource_gpio
    404 {
    405     AML_RESOURCE_LARGE_HEADER_COMMON
    406     UINT8                           RevisionId;
    407     UINT8                           ConnectionType;
    408     UINT16                          Flags;
    409     UINT16                          IntFlags;
    410     UINT8                           PinConfig;
    411     UINT16                          DriveStrength;
    412     UINT16                          DebounceTimeout;
    413     UINT16                          PinTableOffset;
    414     UINT8                           ResSourceIndex;
    415     UINT16                          ResSourceOffset;
    416     UINT16                          VendorOffset;
    417     UINT16                          VendorLength;
    418     /*
    419      * Optional fields follow immediately:
    420      * 1) PIN list (Words)
    421      * 2) Resource Source String
    422      * 3) Vendor Data bytes
    423      */
    424 
    425 } AML_RESOURCE_GPIO;
    426 
    427 #define AML_RESOURCE_GPIO_REVISION              1       /* ACPI 5.0 */
    428 
    429 /* Values for ConnectionType above */
    430 
    431 #define AML_RESOURCE_GPIO_TYPE_INT              0
    432 #define AML_RESOURCE_GPIO_TYPE_IO               1
    433 #define AML_RESOURCE_MAX_GPIOTYPE               1
    434 
    435 
    436 /* Common preamble for all serial descriptors (ACPI 5.0) */
    437 
    438 #define AML_RESOURCE_SERIAL_COMMON \
    439     UINT8                           RevisionId; \
    440     UINT8                           ResSourceIndex; \
    441     UINT8                           Type; \
    442     UINT8                           Flags; \
    443     UINT16                          TypeSpecificFlags; \
    444     UINT8                           TypeRevisionId; \
    445     UINT16                          TypeDataLength; \
    446 
    447 /* Values for the type field above */
    448 
    449 #define AML_RESOURCE_I2C_SERIALBUSTYPE          1
    450 #define AML_RESOURCE_SPI_SERIALBUSTYPE          2
    451 #define AML_RESOURCE_UART_SERIALBUSTYPE         3
    452 #define AML_RESOURCE_MAX_SERIALBUSTYPE          3
    453 #define AML_RESOURCE_VENDOR_SERIALBUSTYPE       192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
    454 
    455 typedef struct aml_resource_common_serialbus
    456 {
    457     AML_RESOURCE_LARGE_HEADER_COMMON
    458     AML_RESOURCE_SERIAL_COMMON
    459 
    460 } AML_RESOURCE_COMMON_SERIALBUS;
    461 
    462 typedef struct aml_resource_i2c_serialbus
    463 {
    464     AML_RESOURCE_LARGE_HEADER_COMMON
    465     AML_RESOURCE_SERIAL_COMMON
    466     UINT32                          ConnectionSpeed;
    467     UINT16                          SlaveAddress;
    468     /*
    469      * Optional fields follow immediately:
    470      * 1) Vendor Data bytes
    471      * 2) Resource Source String
    472      */
    473 
    474 } AML_RESOURCE_I2C_SERIALBUS;
    475 
    476 #define AML_RESOURCE_I2C_REVISION               1       /* ACPI 5.0 */
    477 #define AML_RESOURCE_I2C_TYPE_REVISION          1       /* ACPI 5.0 */
    478 #define AML_RESOURCE_I2C_MIN_DATA_LEN           6
    479 
    480 typedef struct aml_resource_spi_serialbus
    481 {
    482     AML_RESOURCE_LARGE_HEADER_COMMON
    483     AML_RESOURCE_SERIAL_COMMON
    484     UINT32                          ConnectionSpeed;
    485     UINT8                           DataBitLength;
    486     UINT8                           ClockPhase;
    487     UINT8                           ClockPolarity;
    488     UINT16                          DeviceSelection;
    489     /*
    490      * Optional fields follow immediately:
    491      * 1) Vendor Data bytes
    492      * 2) Resource Source String
    493      */
    494 
    495 } AML_RESOURCE_SPI_SERIALBUS;
    496 
    497 #define AML_RESOURCE_SPI_REVISION               1       /* ACPI 5.0 */
    498 #define AML_RESOURCE_SPI_TYPE_REVISION          1       /* ACPI 5.0 */
    499 #define AML_RESOURCE_SPI_MIN_DATA_LEN           9
    500 
    501 
    502 typedef struct aml_resource_uart_serialbus
    503 {
    504     AML_RESOURCE_LARGE_HEADER_COMMON
    505     AML_RESOURCE_SERIAL_COMMON
    506     UINT32                          DefaultBaudRate;
    507     UINT16                          RxFifoSize;
    508     UINT16                          TxFifoSize;
    509     UINT8                           Parity;
    510     UINT8                           LinesEnabled;
    511     /*
    512      * Optional fields follow immediately:
    513      * 1) Vendor Data bytes
    514      * 2) Resource Source String
    515      */
    516 
    517 } AML_RESOURCE_UART_SERIALBUS;
    518 
    519 #define AML_RESOURCE_UART_REVISION              1       /* ACPI 5.0 */
    520 #define AML_RESOURCE_UART_TYPE_REVISION         1       /* ACPI 5.0 */
    521 #define AML_RESOURCE_UART_MIN_DATA_LEN          10
    522 
    523 
    524 /* restore default alignment */
    525 
    526 #pragma pack()
    527 
    528 /* Union of all resource descriptors, so we can allocate the worst case */
    529 
    530 typedef union aml_resource
    531 {
    532     /* Descriptor headers */
    533 
    534     UINT8                                   DescriptorType;
    535     AML_RESOURCE_SMALL_HEADER               SmallHeader;
    536     AML_RESOURCE_LARGE_HEADER               LargeHeader;
    537 
    538     /* Small resource descriptors */
    539 
    540     AML_RESOURCE_IRQ                        Irq;
    541     AML_RESOURCE_DMA                        Dma;
    542     AML_RESOURCE_START_DEPENDENT            StartDpf;
    543     AML_RESOURCE_END_DEPENDENT              EndDpf;
    544     AML_RESOURCE_IO                         Io;
    545     AML_RESOURCE_FIXED_IO                   FixedIo;
    546     AML_RESOURCE_FIXED_DMA                  FixedDma;
    547     AML_RESOURCE_VENDOR_SMALL               VendorSmall;
    548     AML_RESOURCE_END_TAG                    EndTag;
    549 
    550     /* Large resource descriptors */
    551 
    552     AML_RESOURCE_MEMORY24                   Memory24;
    553     AML_RESOURCE_GENERIC_REGISTER           GenericReg;
    554     AML_RESOURCE_VENDOR_LARGE               VendorLarge;
    555     AML_RESOURCE_MEMORY32                   Memory32;
    556     AML_RESOURCE_FIXED_MEMORY32             FixedMemory32;
    557     AML_RESOURCE_ADDRESS16                  Address16;
    558     AML_RESOURCE_ADDRESS32                  Address32;
    559     AML_RESOURCE_ADDRESS64                  Address64;
    560     AML_RESOURCE_EXTENDED_ADDRESS64         ExtAddress64;
    561     AML_RESOURCE_EXTENDED_IRQ               ExtendedIrq;
    562     AML_RESOURCE_GPIO                       Gpio;
    563     AML_RESOURCE_I2C_SERIALBUS              I2cSerialBus;
    564     AML_RESOURCE_SPI_SERIALBUS              SpiSerialBus;
    565     AML_RESOURCE_UART_SERIALBUS             UartSerialBus;
    566     AML_RESOURCE_COMMON_SERIALBUS           CommonSerialBus;
    567 
    568     /* Utility overlays */
    569 
    570     AML_RESOURCE_ADDRESS                    Address;
    571     UINT32                                  DwordItem;
    572     UINT16                                  WordItem;
    573     UINT8                                   ByteItem;
    574 
    575 } AML_RESOURCE;
    576 
    577 #endif
    578