Blame source/include/amlresrc.h

Packit Service 1fb00e
/******************************************************************************
Packit Service 1fb00e
 *
Packit Service 1fb00e
 * Module Name: amlresrc.h - AML resource descriptors
Packit Service 1fb00e
 *
Packit Service 1fb00e
 *****************************************************************************/
Packit Service 1fb00e
Packit Service 1fb00e
/*
Packit Service 1fb00e
 * Copyright (C) 2000 - 2018, Intel Corp.
Packit Service 1fb00e
 * All rights reserved.
Packit Service 1fb00e
 *
Packit Service 1fb00e
 * Redistribution and use in source and binary forms, with or without
Packit Service 1fb00e
 * modification, are permitted provided that the following conditions
Packit Service 1fb00e
 * are met:
Packit Service 1fb00e
 * 1. Redistributions of source code must retain the above copyright
Packit Service 1fb00e
 *    notice, this list of conditions, and the following disclaimer,
Packit Service 1fb00e
 *    without modification.
Packit Service 1fb00e
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
Packit Service 1fb00e
 *    substantially similar to the "NO WARRANTY" disclaimer below
Packit Service 1fb00e
 *    ("Disclaimer") and any redistribution must be conditioned upon
Packit Service 1fb00e
 *    including a substantially similar Disclaimer requirement for further
Packit Service 1fb00e
 *    binary redistribution.
Packit Service 1fb00e
 * 3. Neither the names of the above-listed copyright holders nor the names
Packit Service 1fb00e
 *    of any contributors may be used to endorse or promote products derived
Packit Service 1fb00e
 *    from this software without specific prior written permission.
Packit Service 1fb00e
 *
Packit Service 1fb00e
 * Alternatively, this software may be distributed under the terms of the
Packit Service 1fb00e
 * GNU General Public License ("GPL") version 2 as published by the Free
Packit Service 1fb00e
 * Software Foundation.
Packit Service 1fb00e
 *
Packit Service 1fb00e
 * NO WARRANTY
Packit Service 1fb00e
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit Service 1fb00e
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit Service 1fb00e
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
Packit Service 1fb00e
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit Service 1fb00e
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit Service 1fb00e
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
Packit Service 1fb00e
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Packit Service 1fb00e
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
Packit Service 1fb00e
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
Packit Service 1fb00e
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
Packit Service 1fb00e
 * POSSIBILITY OF SUCH DAMAGES.
Packit Service 1fb00e
 */
Packit Service 1fb00e
Packit Service 1fb00e
/* acpisrc:StructDefs -- for acpisrc conversion */
Packit Service 1fb00e
Packit Service 1fb00e
#ifndef __AMLRESRC_H
Packit Service 1fb00e
#define __AMLRESRC_H
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/*
Packit Service 1fb00e
 * Resource descriptor tags, as defined in the ACPI specification.
Packit Service 1fb00e
 * Used to symbolically reference fields within a descriptor.
Packit Service 1fb00e
 */
Packit Service 1fb00e
#define ACPI_RESTAG_ADDRESS                     "_ADR"
Packit Service 1fb00e
#define ACPI_RESTAG_ALIGNMENT                   "_ALN"
Packit Service 1fb00e
#define ACPI_RESTAG_ADDRESSSPACE                "_ASI"
Packit Service 1fb00e
#define ACPI_RESTAG_ACCESSSIZE                  "_ASZ"
Packit Service 1fb00e
#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES      "_ATT"
Packit Service 1fb00e
#define ACPI_RESTAG_BASEADDRESS                 "_BAS"
Packit Service 1fb00e
#define ACPI_RESTAG_BUSMASTER                   "_BM_"  /* Master(1), Slave(0) */
Packit Service 1fb00e
#define ACPI_RESTAG_DEBOUNCETIME                "_DBT"
Packit Service 1fb00e
#define ACPI_RESTAG_DECODE                      "_DEC"
Packit Service 1fb00e
#define ACPI_RESTAG_DEVICEPOLARITY              "_DPL"
Packit Service 1fb00e
#define ACPI_RESTAG_DMA                         "_DMA"
Packit Service 1fb00e
#define ACPI_RESTAG_DMATYPE                     "_TYP"  /* Compatible(0), A(1), B(2), F(3) */
Packit Service 1fb00e
#define ACPI_RESTAG_DRIVESTRENGTH               "_DRS"
Packit Service 1fb00e
#define ACPI_RESTAG_ENDIANNESS                  "_END"
Packit Service 1fb00e
#define ACPI_RESTAG_FLOWCONTROL                 "_FLC"
Packit Service 1fb00e
#define ACPI_RESTAG_FUNCTION                    "_FUN"
Packit Service 1fb00e
#define ACPI_RESTAG_GRANULARITY                 "_GRA"
Packit Service 1fb00e
#define ACPI_RESTAG_INTERRUPT                   "_INT"
Packit Service 1fb00e
#define ACPI_RESTAG_INTERRUPTLEVEL              "_LL_"  /* ActiveLo(1), ActiveHi(0) */
Packit Service 1fb00e
#define ACPI_RESTAG_INTERRUPTSHARE              "_SHR"  /* Shareable(1), NoShare(0) */
Packit Service 1fb00e
#define ACPI_RESTAG_INTERRUPTTYPE               "_HE_"  /* Edge(1), Level(0) */
Packit Service 1fb00e
#define ACPI_RESTAG_IORESTRICTION               "_IOR"
Packit Service 1fb00e
#define ACPI_RESTAG_LENGTH                      "_LEN"
Packit Service 1fb00e
#define ACPI_RESTAG_LINE                        "_LIN"
Packit Service 1fb00e
#define ACPI_RESTAG_MEMATTRIBUTES               "_MTP"  /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
Packit Service 1fb00e
#define ACPI_RESTAG_MEMTYPE                     "_MEM"  /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
Packit Service 1fb00e
#define ACPI_RESTAG_MAXADDR                     "_MAX"
Packit Service 1fb00e
#define ACPI_RESTAG_MINADDR                     "_MIN"
Packit Service 1fb00e
#define ACPI_RESTAG_MAXTYPE                     "_MAF"
Packit Service 1fb00e
#define ACPI_RESTAG_MINTYPE                     "_MIF"
Packit Service 1fb00e
#define ACPI_RESTAG_MODE                        "_MOD"
Packit Service 1fb00e
#define ACPI_RESTAG_PARITY                      "_PAR"
Packit Service 1fb00e
#define ACPI_RESTAG_PHASE                       "_PHA"
Packit Service 1fb00e
#define ACPI_RESTAG_PIN                         "_PIN"
Packit Service 1fb00e
#define ACPI_RESTAG_PINCONFIG                   "_PPI"
Packit Service 1fb00e
#define ACPI_RESTAG_PINCONFIG_TYPE              "_TYP"
Packit Service 1fb00e
#define ACPI_RESTAG_PINCONFIG_VALUE             "_VAL"
Packit Service 1fb00e
#define ACPI_RESTAG_POLARITY                    "_POL"
Packit Service 1fb00e
#define ACPI_RESTAG_REGISTERBITOFFSET           "_RBO"
Packit Service 1fb00e
#define ACPI_RESTAG_REGISTERBITWIDTH            "_RBW"
Packit Service 1fb00e
#define ACPI_RESTAG_RANGETYPE                   "_RNG"
Packit Service 1fb00e
#define ACPI_RESTAG_READWRITETYPE               "_RW_"  /* ReadOnly(0), Writeable (1) */
Packit Service 1fb00e
#define ACPI_RESTAG_LENGTH_RX                   "_RXL"
Packit Service 1fb00e
#define ACPI_RESTAG_LENGTH_TX                   "_TXL"
Packit Service 1fb00e
#define ACPI_RESTAG_SLAVEMODE                   "_SLV"
Packit Service 1fb00e
#define ACPI_RESTAG_SPEED                       "_SPE"
Packit Service 1fb00e
#define ACPI_RESTAG_STOPBITS                    "_STB"
Packit Service 1fb00e
#define ACPI_RESTAG_TRANSLATION                 "_TRA"
Packit Service 1fb00e
#define ACPI_RESTAG_TRANSTYPE                   "_TRS"  /* Sparse(1), Dense(0) */
Packit Service 1fb00e
#define ACPI_RESTAG_TYPE                        "_TTP"  /* Translation(1), Static (0) */
Packit Service 1fb00e
#define ACPI_RESTAG_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
Packit Service 1fb00e
#define ACPI_RESTAG_VENDORDATA                  "_VEN"
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* Default sizes for "small" resource descriptors */
Packit Service 1fb00e
Packit Service 1fb00e
#define ASL_RDESC_IRQ_SIZE                      0x02
Packit Service 1fb00e
#define ASL_RDESC_DMA_SIZE                      0x02
Packit Service 1fb00e
#define ASL_RDESC_ST_DEPEND_SIZE                0x00
Packit Service 1fb00e
#define ASL_RDESC_END_DEPEND_SIZE               0x00
Packit Service 1fb00e
#define ASL_RDESC_IO_SIZE                       0x07
Packit Service 1fb00e
#define ASL_RDESC_FIXED_IO_SIZE                 0x03
Packit Service 1fb00e
#define ASL_RDESC_FIXED_DMA_SIZE                0x05
Packit Service 1fb00e
#define ASL_RDESC_END_TAG_SIZE                  0x01
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct asl_resource_node
Packit Service 1fb00e
{
Packit Service 1fb00e
    UINT32                          BufferLength;
Packit Service 1fb00e
    void                            *Buffer;
Packit Service 1fb00e
    struct asl_resource_node        *Next;
Packit Service 1fb00e
Packit Service 1fb00e
} ASL_RESOURCE_NODE;
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct asl_resource_info
Packit Service 1fb00e
{
Packit Service 1fb00e
    ACPI_PARSE_OBJECT               *DescriptorTypeOp;  /* Resource descriptor parse node */
Packit Service 1fb00e
    ACPI_PARSE_OBJECT               *MappingOp;         /* Used for mapfile support */
Packit Service 1fb00e
    UINT32                          CurrentByteOffset;  /* Offset in resource template */
Packit Service 1fb00e
Packit Service 1fb00e
} ASL_RESOURCE_INFO;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* Macros used to generate AML resource length fields */
Packit Service 1fb00e
Packit Service 1fb00e
#define ACPI_AML_SIZE_LARGE(r)      (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
Packit Service 1fb00e
#define ACPI_AML_SIZE_SMALL(r)      (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
Packit Service 1fb00e
Packit Service 1fb00e
/*
Packit Service 1fb00e
 * Resource descriptors defined in the ACPI specification.
Packit Service 1fb00e
 *
Packit Service 1fb00e
 * Packing/alignment must be BYTE because these descriptors
Packit Service 1fb00e
 * are used to overlay the raw AML byte stream.
Packit Service 1fb00e
 */
Packit Service 1fb00e
#pragma pack(1)
Packit Service 1fb00e
Packit Service 1fb00e
/*
Packit Service 1fb00e
 * SMALL descriptors
Packit Service 1fb00e
 */
Packit Service 1fb00e
#define AML_RESOURCE_SMALL_HEADER_COMMON \
Packit Service 1fb00e
    UINT8                           DescriptorType;
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_small_header
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_SMALL_HEADER;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_irq
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT16                          IrqMask;
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_IRQ;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_irq_noflags
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT16                          IrqMask;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_IRQ_NOFLAGS;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_dma
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           DmaChannelMask;
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_DMA;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_start_dependent
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_START_DEPENDENT;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_start_dependent_noprio
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_START_DEPENDENT_NOPRIO;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_end_dependent
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_END_DEPENDENT;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_io
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
    UINT16                          Minimum;
Packit Service 1fb00e
    UINT16                          Maximum;
Packit Service 1fb00e
    UINT8                           Alignment;
Packit Service 1fb00e
    UINT8                           AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_IO;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_fixed_io
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT16                          Address;
Packit Service 1fb00e
    UINT8                           AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_FIXED_IO;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_vendor_small
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_VENDOR_SMALL;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_end_tag
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Checksum;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_END_TAG;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_fixed_dma
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER_COMMON
Packit Service 1fb00e
    UINT16                          RequestLines;
Packit Service 1fb00e
    UINT16                          Channels;
Packit Service 1fb00e
    UINT8                           Width;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_FIXED_DMA;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/*
Packit Service 1fb00e
 * LARGE descriptors
Packit Service 1fb00e
 */
Packit Service 1fb00e
#define AML_RESOURCE_LARGE_HEADER_COMMON \
Packit Service 1fb00e
    UINT8                           DescriptorType;\
Packit Service 1fb00e
    UINT16                          ResourceLength;
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_large_header
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_LARGE_HEADER;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* General Flags for address space resource descriptors */
Packit Service 1fb00e
Packit Service 1fb00e
#define ACPI_RESOURCE_FLAG_DEC      2
Packit Service 1fb00e
#define ACPI_RESOURCE_FLAG_MIF      4
Packit Service 1fb00e
#define ACPI_RESOURCE_FLAG_MAF      8
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_memory24
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
    UINT16                          Minimum;
Packit Service 1fb00e
    UINT16                          Maximum;
Packit Service 1fb00e
    UINT16                          Alignment;
Packit Service 1fb00e
    UINT16                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_MEMORY24;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_vendor_large
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_VENDOR_LARGE;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_memory32
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
    UINT32                          Minimum;
Packit Service 1fb00e
    UINT32                          Maximum;
Packit Service 1fb00e
    UINT32                          Alignment;
Packit Service 1fb00e
    UINT32                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_MEMORY32;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_fixed_memory32
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
    UINT32                          Address;
Packit Service 1fb00e
    UINT32                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_FIXED_MEMORY32;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_ADDRESS_COMMON \
Packit Service 1fb00e
    UINT8                           ResourceType; \
Packit Service 1fb00e
    UINT8                           Flags; \
Packit Service 1fb00e
    UINT8                           SpecificFlags;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_address
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_ADDRESS;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_extended_address64
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS_COMMON
Packit Service 1fb00e
    UINT8                           RevisionID;
Packit Service 1fb00e
    UINT8                           Reserved;
Packit Service 1fb00e
    UINT64                          Granularity;
Packit Service 1fb00e
    UINT64                          Minimum;
Packit Service 1fb00e
    UINT64                          Maximum;
Packit Service 1fb00e
    UINT64                          TranslationOffset;
Packit Service 1fb00e
    UINT64                          AddressLength;
Packit Service 1fb00e
    UINT64                          TypeSpecific;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_EXTENDED_ADDRESS64;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_EXTENDED_ADDRESS_REVISION          1       /* ACPI 3.0 */
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_address64
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS_COMMON
Packit Service 1fb00e
    UINT64                          Granularity;
Packit Service 1fb00e
    UINT64                          Minimum;
Packit Service 1fb00e
    UINT64                          Maximum;
Packit Service 1fb00e
    UINT64                          TranslationOffset;
Packit Service 1fb00e
    UINT64                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_ADDRESS64;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_address32
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS_COMMON
Packit Service 1fb00e
    UINT32                          Granularity;
Packit Service 1fb00e
    UINT32                          Minimum;
Packit Service 1fb00e
    UINT32                          Maximum;
Packit Service 1fb00e
    UINT32                          TranslationOffset;
Packit Service 1fb00e
    UINT32                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_ADDRESS32;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_address16
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS_COMMON
Packit Service 1fb00e
    UINT16                          Granularity;
Packit Service 1fb00e
    UINT16                          Minimum;
Packit Service 1fb00e
    UINT16                          Maximum;
Packit Service 1fb00e
    UINT16                          TranslationOffset;
Packit Service 1fb00e
    UINT16                          AddressLength;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_ADDRESS16;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_extended_irq
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           Flags;
Packit Service 1fb00e
    UINT8                           InterruptCount;
Packit Service 1fb00e
    UINT32                          Interrupts[1];
Packit Service 1fb00e
    /* ResSourceIndex, ResSource optional fields follow */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_EXTENDED_IRQ;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_generic_register
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           AddressSpaceId;
Packit Service 1fb00e
    UINT8                           BitWidth;
Packit Service 1fb00e
    UINT8                           BitOffset;
Packit Service 1fb00e
    UINT8                           AccessSize; /* ACPI 3.0, was previously Reserved */
Packit Service 1fb00e
    UINT64                          Address;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_GENERIC_REGISTER;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_gpio
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT8                           ConnectionType;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT16                          IntFlags;
Packit Service 1fb00e
    UINT8                           PinConfig;
Packit Service 1fb00e
    UINT16                          DriveStrength;
Packit Service 1fb00e
    UINT16                          DebounceTimeout;
Packit Service 1fb00e
    UINT16                          PinTableOffset;
Packit Service 1fb00e
    UINT8                           ResSourceIndex;
Packit Service 1fb00e
    UINT16                          ResSourceOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) PIN list (Words)
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_GPIO;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_GPIO_REVISION              1       /* ACPI 5.0 */
Packit Service 1fb00e
Packit Service 1fb00e
/* Values for ConnectionType above */
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_GPIO_TYPE_INT              0
Packit Service 1fb00e
#define AML_RESOURCE_GPIO_TYPE_IO               1
Packit Service 1fb00e
#define AML_RESOURCE_MAX_GPIOTYPE               1
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* Common preamble for all serial descriptors (ACPI 5.0) */
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_SERIAL_COMMON \
Packit Service 1fb00e
    UINT8                           RevisionId; \
Packit Service 1fb00e
    UINT8                           ResSourceIndex; \
Packit Service 1fb00e
    UINT8                           Type; \
Packit Service 1fb00e
    UINT8                           Flags; \
Packit Service 1fb00e
    UINT16                          TypeSpecificFlags; \
Packit Service 1fb00e
    UINT8                           TypeRevisionId; \
Packit Service 1fb00e
    UINT16                          TypeDataLength; \
Packit Service 1fb00e
Packit Service 1fb00e
/* Values for the type field above */
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_I2C_SERIALBUSTYPE          1
Packit Service 1fb00e
#define AML_RESOURCE_SPI_SERIALBUSTYPE          2
Packit Service 1fb00e
#define AML_RESOURCE_UART_SERIALBUSTYPE         3
Packit Service 1fb00e
#define AML_RESOURCE_MAX_SERIALBUSTYPE          3
Packit Service 1fb00e
#define AML_RESOURCE_VENDOR_SERIALBUSTYPE       192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_common_serialbus
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_SERIAL_COMMON
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_COMMON_SERIALBUS;
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_i2c_serialbus
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_SERIAL_COMMON
Packit Service 1fb00e
    UINT32                          ConnectionSpeed;
Packit Service 1fb00e
    UINT16                          SlaveAddress;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) Vendor Data bytes
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_I2C_SERIALBUS;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_I2C_REVISION               1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_I2C_TYPE_REVISION          1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_I2C_MIN_DATA_LEN           6
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_spi_serialbus
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_SERIAL_COMMON
Packit Service 1fb00e
    UINT32                          ConnectionSpeed;
Packit Service 1fb00e
    UINT8                           DataBitLength;
Packit Service 1fb00e
    UINT8                           ClockPhase;
Packit Service 1fb00e
    UINT8                           ClockPolarity;
Packit Service 1fb00e
    UINT16                          DeviceSelection;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) Vendor Data bytes
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_SPI_SERIALBUS;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_SPI_REVISION               1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_SPI_TYPE_REVISION          1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_SPI_MIN_DATA_LEN           9
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_uart_serialbus
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    AML_RESOURCE_SERIAL_COMMON
Packit Service 1fb00e
    UINT32                          DefaultBaudRate;
Packit Service 1fb00e
    UINT16                          RxFifoSize;
Packit Service 1fb00e
    UINT16                          TxFifoSize;
Packit Service 1fb00e
    UINT8                           Parity;
Packit Service 1fb00e
    UINT8                           LinesEnabled;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) Vendor Data bytes
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_UART_SERIALBUS;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_UART_REVISION              1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_UART_TYPE_REVISION         1       /* ACPI 5.0 */
Packit Service 1fb00e
#define AML_RESOURCE_UART_MIN_DATA_LEN          10
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_pin_function
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT8                           PinConfig;
Packit Service 1fb00e
    UINT16                          FunctionNumber;
Packit Service 1fb00e
    UINT16                          PinTableOffset;
Packit Service 1fb00e
    UINT8                           ResSourceIndex;
Packit Service 1fb00e
    UINT16                          ResSourceOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) PIN list (Words)
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_PIN_FUNCTION;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_PIN_FUNCTION_REVISION      1       /* ACPI 6.2 */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_pin_config
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT8                           PinConfigType;
Packit Service 1fb00e
    UINT32                          PinConfigValue;
Packit Service 1fb00e
    UINT16                          PinTableOffset;
Packit Service 1fb00e
    UINT8                           ResSourceIndex;
Packit Service 1fb00e
    UINT16                          ResSourceOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) PIN list (Words)
Packit Service 1fb00e
     * 2) Resource Source String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_PIN_CONFIG;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_PIN_CONFIG_REVISION      1       /* ACPI 6.2 */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_pin_group
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT16                          PinTableOffset;
Packit Service 1fb00e
    UINT16                          LabelOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) PIN list (Words)
Packit Service 1fb00e
     * 2) Resource Label String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_PIN_GROUP;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_PIN_GROUP_REVISION      1       /* ACPI 6.2 */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_pin_group_function
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT16                          FunctionNumber;
Packit Service 1fb00e
    UINT8                           ResSourceIndex;
Packit Service 1fb00e
    UINT16                          ResSourceOffset;
Packit Service 1fb00e
    UINT16                          ResSourceLabelOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) Resource Source String
Packit Service 1fb00e
     * 2) Resource Source Label String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_PIN_GROUP_FUNCTION;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION    1       /* ACPI 6.2 */
Packit Service 1fb00e
Packit Service 1fb00e
typedef struct aml_resource_pin_group_config
Packit Service 1fb00e
{
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER_COMMON
Packit Service 1fb00e
    UINT8                           RevisionId;
Packit Service 1fb00e
    UINT16                          Flags;
Packit Service 1fb00e
    UINT8                           PinConfigType;
Packit Service 1fb00e
    UINT32                          PinConfigValue;
Packit Service 1fb00e
    UINT8                           ResSourceIndex;
Packit Service 1fb00e
    UINT16                          ResSourceOffset;
Packit Service 1fb00e
    UINT16                          ResSourceLabelOffset;
Packit Service 1fb00e
    UINT16                          VendorOffset;
Packit Service 1fb00e
    UINT16                          VendorLength;
Packit Service 1fb00e
    /*
Packit Service 1fb00e
     * Optional fields follow immediately:
Packit Service 1fb00e
     * 1) Resource Source String
Packit Service 1fb00e
     * 2) Resource Source Label String
Packit Service 1fb00e
     * 3) Vendor Data bytes
Packit Service 1fb00e
     */
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE_PIN_GROUP_CONFIG;
Packit Service 1fb00e
Packit Service 1fb00e
#define AML_RESOURCE_PIN_GROUP_CONFIG_REVISION    1       /* ACPI 6.2 */
Packit Service 1fb00e
Packit Service 1fb00e
/* restore default alignment */
Packit Service 1fb00e
Packit Service 1fb00e
#pragma pack()
Packit Service 1fb00e
Packit Service 1fb00e
/* Union of all resource descriptors, so we can allocate the worst case */
Packit Service 1fb00e
Packit Service 1fb00e
typedef union aml_resource
Packit Service 1fb00e
{
Packit Service 1fb00e
    /* Descriptor headers */
Packit Service 1fb00e
Packit Service 1fb00e
    UINT8                                   DescriptorType;
Packit Service 1fb00e
    AML_RESOURCE_SMALL_HEADER               SmallHeader;
Packit Service 1fb00e
    AML_RESOURCE_LARGE_HEADER               LargeHeader;
Packit Service 1fb00e
Packit Service 1fb00e
    /* Small resource descriptors */
Packit Service 1fb00e
Packit Service 1fb00e
    AML_RESOURCE_IRQ                        Irq;
Packit Service 1fb00e
    AML_RESOURCE_DMA                        Dma;
Packit Service 1fb00e
    AML_RESOURCE_START_DEPENDENT            StartDpf;
Packit Service 1fb00e
    AML_RESOURCE_END_DEPENDENT              EndDpf;
Packit Service 1fb00e
    AML_RESOURCE_IO                         Io;
Packit Service 1fb00e
    AML_RESOURCE_FIXED_IO                   FixedIo;
Packit Service 1fb00e
    AML_RESOURCE_FIXED_DMA                  FixedDma;
Packit Service 1fb00e
    AML_RESOURCE_VENDOR_SMALL               VendorSmall;
Packit Service 1fb00e
    AML_RESOURCE_END_TAG                    EndTag;
Packit Service 1fb00e
Packit Service 1fb00e
    /* Large resource descriptors */
Packit Service 1fb00e
Packit Service 1fb00e
    AML_RESOURCE_MEMORY24                   Memory24;
Packit Service 1fb00e
    AML_RESOURCE_GENERIC_REGISTER           GenericReg;
Packit Service 1fb00e
    AML_RESOURCE_VENDOR_LARGE               VendorLarge;
Packit Service 1fb00e
    AML_RESOURCE_MEMORY32                   Memory32;
Packit Service 1fb00e
    AML_RESOURCE_FIXED_MEMORY32             FixedMemory32;
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS16                  Address16;
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS32                  Address32;
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS64                  Address64;
Packit Service 1fb00e
    AML_RESOURCE_EXTENDED_ADDRESS64         ExtAddress64;
Packit Service 1fb00e
    AML_RESOURCE_EXTENDED_IRQ               ExtendedIrq;
Packit Service 1fb00e
    AML_RESOURCE_GPIO                       Gpio;
Packit Service 1fb00e
    AML_RESOURCE_I2C_SERIALBUS              I2cSerialBus;
Packit Service 1fb00e
    AML_RESOURCE_SPI_SERIALBUS              SpiSerialBus;
Packit Service 1fb00e
    AML_RESOURCE_UART_SERIALBUS             UartSerialBus;
Packit Service 1fb00e
    AML_RESOURCE_COMMON_SERIALBUS           CommonSerialBus;
Packit Service 1fb00e
    AML_RESOURCE_PIN_FUNCTION               PinFunction;
Packit Service 1fb00e
    AML_RESOURCE_PIN_CONFIG                 PinConfig;
Packit Service 1fb00e
    AML_RESOURCE_PIN_GROUP                  PinGroup;
Packit Service 1fb00e
    AML_RESOURCE_PIN_GROUP_FUNCTION         PinGroupFunction;
Packit Service 1fb00e
    AML_RESOURCE_PIN_GROUP_CONFIG           PinGroupConfig;
Packit Service 1fb00e
Packit Service 1fb00e
    /* Utility overlays */
Packit Service 1fb00e
Packit Service 1fb00e
    AML_RESOURCE_ADDRESS                    Address;
Packit Service 1fb00e
    UINT32                                  DwordItem;
Packit Service 1fb00e
    UINT16                                  WordItem;
Packit Service 1fb00e
    UINT8                                   ByteItem;
Packit Service 1fb00e
Packit Service 1fb00e
} AML_RESOURCE;
Packit Service 1fb00e
Packit Service 1fb00e
Packit Service 1fb00e
/* Interfaces used by both the disassembler and compiler */
Packit Service 1fb00e
Packit Service 1fb00e
void
Packit Service 1fb00e
MpSaveGpioInfo (
Packit Service 1fb00e
    ACPI_PARSE_OBJECT       *Op,
Packit Service 1fb00e
    AML_RESOURCE            *Resource,
Packit Service 1fb00e
    UINT32                  PinCount,
Packit Service 1fb00e
    UINT16                  *PinList,
Packit Service 1fb00e
    char                    *DeviceName);
Packit Service 1fb00e
Packit Service 1fb00e
void
Packit Service 1fb00e
MpSaveSerialInfo (
Packit Service 1fb00e
    ACPI_PARSE_OBJECT       *Op,
Packit Service 1fb00e
    AML_RESOURCE            *Resource,
Packit Service 1fb00e
    char                    *DeviceName);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetHidFromParseTree (
Packit Service 1fb00e
    ACPI_NAMESPACE_NODE     *HidNode);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetHidViaNamestring (
Packit Service 1fb00e
    char                    *DeviceName);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetConnectionInfo (
Packit Service 1fb00e
    ACPI_PARSE_OBJECT       *Op,
Packit Service 1fb00e
    UINT32                  PinIndex,
Packit Service 1fb00e
    ACPI_NAMESPACE_NODE     **TargetNode,
Packit Service 1fb00e
    char                    **TargetName);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetParentDeviceHid (
Packit Service 1fb00e
    ACPI_PARSE_OBJECT       *Op,
Packit Service 1fb00e
    ACPI_NAMESPACE_NODE     **TargetNode,
Packit Service 1fb00e
    char                    **ParentDeviceName);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetDdnValue (
Packit Service 1fb00e
    char                    *DeviceName);
Packit Service 1fb00e
Packit Service 1fb00e
char *
Packit Service 1fb00e
MpGetHidValue (
Packit Service 1fb00e
    ACPI_NAMESPACE_NODE     *DeviceNode);
Packit Service 1fb00e
Packit Service 1fb00e
#endif