17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 37c478bd9Sstevel@tonic-gate * Module Name: amlresrc.h - AML resource descriptors 47c478bd9Sstevel@tonic-gate * 57c478bd9Sstevel@tonic-gate *****************************************************************************/ 67c478bd9Sstevel@tonic-gate 7*35786f68SRobert Mustacchi /****************************************************************************** 8*35786f68SRobert Mustacchi * 9*35786f68SRobert Mustacchi * 1. Copyright Notice 10*35786f68SRobert Mustacchi * 11*35786f68SRobert Mustacchi * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp. 127c478bd9Sstevel@tonic-gate * All rights reserved. 137c478bd9Sstevel@tonic-gate * 14*35786f68SRobert Mustacchi * 2. License 15*35786f68SRobert Mustacchi * 16*35786f68SRobert Mustacchi * 2.1. This is your license from Intel Corp. under its intellectual property 17*35786f68SRobert Mustacchi * rights. You may have additional license terms from the party that provided 18*35786f68SRobert Mustacchi * you this software, covering your right to use that party's intellectual 19*35786f68SRobert Mustacchi * property rights. 20*35786f68SRobert Mustacchi * 21*35786f68SRobert Mustacchi * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22*35786f68SRobert Mustacchi * copy of the source code appearing in this file ("Covered Code") an 23*35786f68SRobert Mustacchi * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24*35786f68SRobert Mustacchi * base code distributed originally by Intel ("Original Intel Code") to copy, 25*35786f68SRobert Mustacchi * make derivatives, distribute, use and display any portion of the Covered 26*35786f68SRobert Mustacchi * Code in any form, with the right to sublicense such rights; and 27*35786f68SRobert Mustacchi * 28*35786f68SRobert Mustacchi * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29*35786f68SRobert Mustacchi * license (with the right to sublicense), under only those claims of Intel 30*35786f68SRobert Mustacchi * patents that are infringed by the Original Intel Code, to make, use, sell, 31*35786f68SRobert Mustacchi * offer to sell, and import the Covered Code and derivative works thereof 32*35786f68SRobert Mustacchi * solely to the minimum extent necessary to exercise the above copyright 33*35786f68SRobert Mustacchi * license, and in no event shall the patent license extend to any additions 34*35786f68SRobert Mustacchi * to or modifications of the Original Intel Code. No other license or right 35*35786f68SRobert Mustacchi * is granted directly or by implication, estoppel or otherwise; 36*35786f68SRobert Mustacchi * 37*35786f68SRobert Mustacchi * The above copyright and patent license is granted only if the following 38*35786f68SRobert Mustacchi * conditions are met: 39*35786f68SRobert Mustacchi * 40*35786f68SRobert Mustacchi * 3. Conditions 41*35786f68SRobert Mustacchi * 42*35786f68SRobert Mustacchi * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 44*35786f68SRobert Mustacchi * Code or modification with rights to further distribute source must include 45*35786f68SRobert Mustacchi * the above Copyright Notice, the above License, this list of Conditions, 46*35786f68SRobert Mustacchi * and the following Disclaimer and Export Compliance provision. In addition, 47*35786f68SRobert Mustacchi * Licensee must cause all Covered Code to which Licensee contributes to 48*35786f68SRobert Mustacchi * contain a file documenting the changes Licensee made to create that Covered 49*35786f68SRobert Mustacchi * Code and the date of any change. Licensee must include in that file the 50*35786f68SRobert Mustacchi * documentation of any changes made by any predecessor Licensee. Licensee 51*35786f68SRobert Mustacchi * must include a prominent statement that the modification is derived, 52*35786f68SRobert Mustacchi * directly or indirectly, from Original Intel Code. 53*35786f68SRobert Mustacchi * 54*35786f68SRobert Mustacchi * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 56*35786f68SRobert Mustacchi * Code or modification without rights to further distribute source must 57*35786f68SRobert Mustacchi * include the following Disclaimer and Export Compliance provision in the 58*35786f68SRobert Mustacchi * documentation and/or other materials provided with distribution. In 59*35786f68SRobert Mustacchi * addition, Licensee may not authorize further sublicense of source of any 60*35786f68SRobert Mustacchi * portion of the Covered Code, and must include terms to the effect that the 61*35786f68SRobert Mustacchi * license from Licensee to its licensee is limited to the intellectual 62*35786f68SRobert Mustacchi * property embodied in the software Licensee provides to its licensee, and 63*35786f68SRobert Mustacchi * not to intellectual property embodied in modifications its licensee may 64*35786f68SRobert Mustacchi * make. 65*35786f68SRobert Mustacchi * 66*35786f68SRobert Mustacchi * 3.3. Redistribution of Executable. Redistribution in executable form of any 67*35786f68SRobert Mustacchi * substantial portion of the Covered Code or modification must reproduce the 68*35786f68SRobert Mustacchi * above Copyright Notice, and the following Disclaimer and Export Compliance 69*35786f68SRobert Mustacchi * provision in the documentation and/or other materials provided with the 70*35786f68SRobert Mustacchi * distribution. 71*35786f68SRobert Mustacchi * 72*35786f68SRobert Mustacchi * 3.4. Intel retains all right, title, and interest in and to the Original 73*35786f68SRobert Mustacchi * Intel Code. 74*35786f68SRobert Mustacchi * 75*35786f68SRobert Mustacchi * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76*35786f68SRobert Mustacchi * Intel shall be used in advertising or otherwise to promote the sale, use or 77*35786f68SRobert Mustacchi * other dealings in products derived from or relating to the Covered Code 78*35786f68SRobert Mustacchi * without prior written authorization from Intel. 79*35786f68SRobert Mustacchi * 80*35786f68SRobert Mustacchi * 4. Disclaimer and Export Compliance 81*35786f68SRobert Mustacchi * 82*35786f68SRobert Mustacchi * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83*35786f68SRobert Mustacchi * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84*35786f68SRobert Mustacchi * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85*35786f68SRobert Mustacchi * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86*35786f68SRobert Mustacchi * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87*35786f68SRobert Mustacchi * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88*35786f68SRobert Mustacchi * PARTICULAR PURPOSE. 89*35786f68SRobert Mustacchi * 90*35786f68SRobert Mustacchi * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91*35786f68SRobert Mustacchi * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92*35786f68SRobert Mustacchi * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93*35786f68SRobert Mustacchi * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94*35786f68SRobert Mustacchi * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95*35786f68SRobert Mustacchi * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96*35786f68SRobert Mustacchi * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97*35786f68SRobert Mustacchi * LIMITED REMEDY. 98*35786f68SRobert Mustacchi * 99*35786f68SRobert Mustacchi * 4.3. Licensee shall not export, either directly or indirectly, any of this 100*35786f68SRobert Mustacchi * software or system incorporating such software without first obtaining any 101*35786f68SRobert Mustacchi * required license or other approval from the U. S. Department of Commerce or 102*35786f68SRobert Mustacchi * any other agency or department of the United States Government. In the 103*35786f68SRobert Mustacchi * event Licensee exports any such software from the United States or 104*35786f68SRobert Mustacchi * re-exports any such software from a foreign destination, Licensee shall 105*35786f68SRobert Mustacchi * ensure that the distribution and export/re-export of the software is in 106*35786f68SRobert Mustacchi * compliance with all laws, regulations, orders, or other restrictions of the 107*35786f68SRobert Mustacchi * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108*35786f68SRobert Mustacchi * any of its subsidiaries will export/re-export any technical data, process, 109*35786f68SRobert Mustacchi * software, or service, directly or indirectly, to any country for which the 110*35786f68SRobert Mustacchi * United States government or any agency thereof requires an export license, 111*35786f68SRobert Mustacchi * other governmental approval, or letter of assurance, without first obtaining 112*35786f68SRobert Mustacchi * such license, approval or letter. 113*35786f68SRobert Mustacchi * 114*35786f68SRobert Mustacchi ***************************************************************************** 115*35786f68SRobert Mustacchi * 116*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 117*35786f68SRobert Mustacchi * following license: 118*35786f68SRobert Mustacchi * 11926f3cdf0SGordon Ross * Redistribution and use in source and binary forms, with or without 12026f3cdf0SGordon Ross * modification, are permitted provided that the following conditions 12126f3cdf0SGordon Ross * are met: 12226f3cdf0SGordon Ross * 1. Redistributions of source code must retain the above copyright 12326f3cdf0SGordon Ross * notice, this list of conditions, and the following disclaimer, 12426f3cdf0SGordon Ross * without modification. 12526f3cdf0SGordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12626f3cdf0SGordon Ross * substantially similar to the "NO WARRANTY" disclaimer below 12726f3cdf0SGordon Ross * ("Disclaimer") and any redistribution must be conditioned upon 12826f3cdf0SGordon Ross * including a substantially similar Disclaimer requirement for further 12926f3cdf0SGordon Ross * binary redistribution. 13026f3cdf0SGordon Ross * 3. Neither the names of the above-listed copyright holders nor the names 13126f3cdf0SGordon Ross * of any contributors may be used to endorse or promote products derived 13226f3cdf0SGordon Ross * from this software without specific prior written permission. 13326f3cdf0SGordon Ross * 13426f3cdf0SGordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 13526f3cdf0SGordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136*35786f68SRobert Mustacchi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 13726f3cdf0SGordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138*35786f68SRobert Mustacchi * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139*35786f68SRobert Mustacchi * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140*35786f68SRobert Mustacchi * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141*35786f68SRobert Mustacchi * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142*35786f68SRobert Mustacchi * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143*35786f68SRobert Mustacchi * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144*35786f68SRobert Mustacchi * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145*35786f68SRobert Mustacchi * 146*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 147*35786f68SRobert Mustacchi * GNU General Public License ("GPL") version 2 as published by the Free 148*35786f68SRobert Mustacchi * Software Foundation. 149*35786f68SRobert Mustacchi * 150*35786f68SRobert Mustacchi *****************************************************************************/ 1517c478bd9Sstevel@tonic-gate 15227f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */ 1537c478bd9Sstevel@tonic-gate 1547c478bd9Sstevel@tonic-gate #ifndef __AMLRESRC_H 1557c478bd9Sstevel@tonic-gate #define __AMLRESRC_H 1567c478bd9Sstevel@tonic-gate 1577c478bd9Sstevel@tonic-gate 15827f7c583Smyers /* 15927f7c583Smyers * Resource descriptor tags, as defined in the ACPI specification. 16027f7c583Smyers * Used to symbolically reference fields within a descriptor. 16127f7c583Smyers */ 16227f7c583Smyers #define ACPI_RESTAG_ADDRESS "_ADR" 16327f7c583Smyers #define ACPI_RESTAG_ALIGNMENT "_ALN" 16427f7c583Smyers #define ACPI_RESTAG_ADDRESSSPACE "_ASI" 16527f7c583Smyers #define ACPI_RESTAG_ACCESSSIZE "_ASZ" 16627f7c583Smyers #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" 16727f7c583Smyers #define ACPI_RESTAG_BASEADDRESS "_BAS" 16827f7c583Smyers #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ 1697b1019a6SJerry Jelinek #define ACPI_RESTAG_DEBOUNCETIME "_DBT" 17027f7c583Smyers #define ACPI_RESTAG_DECODE "_DEC" 1717b1019a6SJerry Jelinek #define ACPI_RESTAG_DEVICEPOLARITY "_DPL" 17227f7c583Smyers #define ACPI_RESTAG_DMA "_DMA" 17327f7c583Smyers #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ 1747b1019a6SJerry Jelinek #define ACPI_RESTAG_DRIVESTRENGTH "_DRS" 1757b1019a6SJerry Jelinek #define ACPI_RESTAG_ENDIANNESS "_END" 1767b1019a6SJerry Jelinek #define ACPI_RESTAG_FLOWCONTROL "_FLC" 177*35786f68SRobert Mustacchi #define ACPI_RESTAG_FUNCTION "_FUN" 17827f7c583Smyers #define ACPI_RESTAG_GRANULARITY "_GRA" 17927f7c583Smyers #define ACPI_RESTAG_INTERRUPT "_INT" 18027f7c583Smyers #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ 18127f7c583Smyers #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ 18227f7c583Smyers #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ 1837b1019a6SJerry Jelinek #define ACPI_RESTAG_IORESTRICTION "_IOR" 18427f7c583Smyers #define ACPI_RESTAG_LENGTH "_LEN" 1857b1019a6SJerry Jelinek #define ACPI_RESTAG_LINE "_LIN" 18627f7c583Smyers #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ 18727f7c583Smyers #define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ 18827f7c583Smyers #define ACPI_RESTAG_MAXADDR "_MAX" 18927f7c583Smyers #define ACPI_RESTAG_MINADDR "_MIN" 19027f7c583Smyers #define ACPI_RESTAG_MAXTYPE "_MAF" 19127f7c583Smyers #define ACPI_RESTAG_MINTYPE "_MIF" 1927b1019a6SJerry Jelinek #define ACPI_RESTAG_MODE "_MOD" 1937b1019a6SJerry Jelinek #define ACPI_RESTAG_PARITY "_PAR" 1947b1019a6SJerry Jelinek #define ACPI_RESTAG_PHASE "_PHA" 1957b1019a6SJerry Jelinek #define ACPI_RESTAG_PIN "_PIN" 1967b1019a6SJerry Jelinek #define ACPI_RESTAG_PINCONFIG "_PPI" 197*35786f68SRobert Mustacchi #define ACPI_RESTAG_PINCONFIG_TYPE "_TYP" 198*35786f68SRobert Mustacchi #define ACPI_RESTAG_PINCONFIG_VALUE "_VAL" 1997b1019a6SJerry Jelinek #define ACPI_RESTAG_POLARITY "_POL" 20027f7c583Smyers #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" 20127f7c583Smyers #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" 20227f7c583Smyers #define ACPI_RESTAG_RANGETYPE "_RNG" 20327f7c583Smyers #define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ 2047b1019a6SJerry Jelinek #define ACPI_RESTAG_LENGTH_RX "_RXL" 2057b1019a6SJerry Jelinek #define ACPI_RESTAG_LENGTH_TX "_TXL" 2067b1019a6SJerry Jelinek #define ACPI_RESTAG_SLAVEMODE "_SLV" 2077b1019a6SJerry Jelinek #define ACPI_RESTAG_SPEED "_SPE" 2087b1019a6SJerry Jelinek #define ACPI_RESTAG_STOPBITS "_STB" 20927f7c583Smyers #define ACPI_RESTAG_TRANSLATION "_TRA" 21027f7c583Smyers #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ 21127f7c583Smyers #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ 21227f7c583Smyers #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ 2137b1019a6SJerry Jelinek #define ACPI_RESTAG_VENDORDATA "_VEN" 2147c478bd9Sstevel@tonic-gate 2157c478bd9Sstevel@tonic-gate 2167c478bd9Sstevel@tonic-gate /* Default sizes for "small" resource descriptors */ 2177c478bd9Sstevel@tonic-gate 2187c478bd9Sstevel@tonic-gate #define ASL_RDESC_IRQ_SIZE 0x02 2197c478bd9Sstevel@tonic-gate #define ASL_RDESC_DMA_SIZE 0x02 2207c478bd9Sstevel@tonic-gate #define ASL_RDESC_ST_DEPEND_SIZE 0x00 2217c478bd9Sstevel@tonic-gate #define ASL_RDESC_END_DEPEND_SIZE 0x00 2227c478bd9Sstevel@tonic-gate #define ASL_RDESC_IO_SIZE 0x07 2237c478bd9Sstevel@tonic-gate #define ASL_RDESC_FIXED_IO_SIZE 0x03 2247b1019a6SJerry Jelinek #define ASL_RDESC_FIXED_DMA_SIZE 0x05 2257c478bd9Sstevel@tonic-gate #define ASL_RDESC_END_TAG_SIZE 0x01 2267c478bd9Sstevel@tonic-gate 2277c478bd9Sstevel@tonic-gate 2287c478bd9Sstevel@tonic-gate typedef struct asl_resource_node 2297c478bd9Sstevel@tonic-gate { 23027f7c583Smyers UINT32 BufferLength; 23127f7c583Smyers void *Buffer; 23227f7c583Smyers struct asl_resource_node *Next; 2337c478bd9Sstevel@tonic-gate 2347c478bd9Sstevel@tonic-gate } ASL_RESOURCE_NODE; 2357c478bd9Sstevel@tonic-gate 2367b1019a6SJerry Jelinek typedef struct asl_resource_info 2377b1019a6SJerry Jelinek { 2387b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *DescriptorTypeOp; /* Resource descriptor parse node */ 2397b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *MappingOp; /* Used for mapfile support */ 2407b1019a6SJerry Jelinek UINT32 CurrentByteOffset; /* Offset in resource template */ 2417b1019a6SJerry Jelinek 2427b1019a6SJerry Jelinek } ASL_RESOURCE_INFO; 2437b1019a6SJerry Jelinek 2447c478bd9Sstevel@tonic-gate 24530082d0cSmyers /* Macros used to generate AML resource length fields */ 24630082d0cSmyers 24730082d0cSmyers #define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) 24830082d0cSmyers #define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) 24930082d0cSmyers 2507c478bd9Sstevel@tonic-gate /* 2517c478bd9Sstevel@tonic-gate * Resource descriptors defined in the ACPI specification. 2527c478bd9Sstevel@tonic-gate * 2537c478bd9Sstevel@tonic-gate * Packing/alignment must be BYTE because these descriptors 254186507a7Smyers * are used to overlay the raw AML byte stream. 2557c478bd9Sstevel@tonic-gate */ 2567c478bd9Sstevel@tonic-gate #pragma pack(1) 2577c478bd9Sstevel@tonic-gate 258186507a7Smyers /* 259186507a7Smyers * SMALL descriptors 260186507a7Smyers */ 261186507a7Smyers #define AML_RESOURCE_SMALL_HEADER_COMMON \ 26227f7c583Smyers UINT8 DescriptorType; 263186507a7Smyers 264186507a7Smyers typedef struct aml_resource_small_header 265186507a7Smyers { 266186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 267186507a7Smyers 268186507a7Smyers } AML_RESOURCE_SMALL_HEADER; 269186507a7Smyers 270186507a7Smyers 271186507a7Smyers typedef struct aml_resource_irq 272186507a7Smyers { 273186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 27427f7c583Smyers UINT16 IrqMask; 27527f7c583Smyers UINT8 Flags; 2767c478bd9Sstevel@tonic-gate 277186507a7Smyers } AML_RESOURCE_IRQ; 2787c478bd9Sstevel@tonic-gate 2797c478bd9Sstevel@tonic-gate 280186507a7Smyers typedef struct aml_resource_irq_noflags 2817c478bd9Sstevel@tonic-gate { 282186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 28327f7c583Smyers UINT16 IrqMask; 2847c478bd9Sstevel@tonic-gate 285186507a7Smyers } AML_RESOURCE_IRQ_NOFLAGS; 2867c478bd9Sstevel@tonic-gate 2877c478bd9Sstevel@tonic-gate 288186507a7Smyers typedef struct aml_resource_dma 2897c478bd9Sstevel@tonic-gate { 290186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 29127f7c583Smyers UINT8 DmaChannelMask; 29227f7c583Smyers UINT8 Flags; 2937c478bd9Sstevel@tonic-gate 294186507a7Smyers } AML_RESOURCE_DMA; 2957c478bd9Sstevel@tonic-gate 2967c478bd9Sstevel@tonic-gate 297186507a7Smyers typedef struct aml_resource_start_dependent 2987c478bd9Sstevel@tonic-gate { 299186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 30027f7c583Smyers UINT8 Flags; 3017c478bd9Sstevel@tonic-gate 302186507a7Smyers } AML_RESOURCE_START_DEPENDENT; 3037c478bd9Sstevel@tonic-gate 3047c478bd9Sstevel@tonic-gate 305186507a7Smyers typedef struct aml_resource_start_dependent_noprio 3067c478bd9Sstevel@tonic-gate { 307186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 3087c478bd9Sstevel@tonic-gate 309186507a7Smyers } AML_RESOURCE_START_DEPENDENT_NOPRIO; 3107c478bd9Sstevel@tonic-gate 3117c478bd9Sstevel@tonic-gate 312186507a7Smyers typedef struct aml_resource_end_dependent 3137c478bd9Sstevel@tonic-gate { 314186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 3157c478bd9Sstevel@tonic-gate 316186507a7Smyers } AML_RESOURCE_END_DEPENDENT; 3177c478bd9Sstevel@tonic-gate 3187c478bd9Sstevel@tonic-gate 319186507a7Smyers typedef struct aml_resource_io 3207c478bd9Sstevel@tonic-gate { 321186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 32227f7c583Smyers UINT8 Flags; 32327f7c583Smyers UINT16 Minimum; 32427f7c583Smyers UINT16 Maximum; 32527f7c583Smyers UINT8 Alignment; 32627f7c583Smyers UINT8 AddressLength; 3277c478bd9Sstevel@tonic-gate 328186507a7Smyers } AML_RESOURCE_IO; 3297c478bd9Sstevel@tonic-gate 3307c478bd9Sstevel@tonic-gate 331186507a7Smyers typedef struct aml_resource_fixed_io 3327c478bd9Sstevel@tonic-gate { 333186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 33427f7c583Smyers UINT16 Address; 33527f7c583Smyers UINT8 AddressLength; 3367c478bd9Sstevel@tonic-gate 337186507a7Smyers } AML_RESOURCE_FIXED_IO; 3387c478bd9Sstevel@tonic-gate 3397c478bd9Sstevel@tonic-gate 340186507a7Smyers typedef struct aml_resource_vendor_small 3417c478bd9Sstevel@tonic-gate { 342186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 3437c478bd9Sstevel@tonic-gate 344186507a7Smyers } AML_RESOURCE_VENDOR_SMALL; 3457c478bd9Sstevel@tonic-gate 3467c478bd9Sstevel@tonic-gate 347186507a7Smyers typedef struct aml_resource_end_tag 3487c478bd9Sstevel@tonic-gate { 349186507a7Smyers AML_RESOURCE_SMALL_HEADER_COMMON 35027f7c583Smyers UINT8 Checksum; 3517c478bd9Sstevel@tonic-gate 352186507a7Smyers } AML_RESOURCE_END_TAG; 3537c478bd9Sstevel@tonic-gate 3547c478bd9Sstevel@tonic-gate 3557b1019a6SJerry Jelinek typedef struct aml_resource_fixed_dma 3567b1019a6SJerry Jelinek { 3577b1019a6SJerry Jelinek AML_RESOURCE_SMALL_HEADER_COMMON 3587b1019a6SJerry Jelinek UINT16 RequestLines; 3597b1019a6SJerry Jelinek UINT16 Channels; 3607b1019a6SJerry Jelinek UINT8 Width; 3617b1019a6SJerry Jelinek 3627b1019a6SJerry Jelinek } AML_RESOURCE_FIXED_DMA; 3637b1019a6SJerry Jelinek 3647b1019a6SJerry Jelinek 365186507a7Smyers /* 366186507a7Smyers * LARGE descriptors 367186507a7Smyers */ 368186507a7Smyers #define AML_RESOURCE_LARGE_HEADER_COMMON \ 36927f7c583Smyers UINT8 DescriptorType;\ 37027f7c583Smyers UINT16 ResourceLength; 3717c478bd9Sstevel@tonic-gate 372186507a7Smyers typedef struct aml_resource_large_header 3737c478bd9Sstevel@tonic-gate { 374186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 375186507a7Smyers 376186507a7Smyers } AML_RESOURCE_LARGE_HEADER; 377186507a7Smyers 378186507a7Smyers 37926f3cdf0SGordon Ross /* General Flags for address space resource descriptors */ 38026f3cdf0SGordon Ross 38126f3cdf0SGordon Ross #define ACPI_RESOURCE_FLAG_DEC 2 38226f3cdf0SGordon Ross #define ACPI_RESOURCE_FLAG_MIF 4 38326f3cdf0SGordon Ross #define ACPI_RESOURCE_FLAG_MAF 8 38426f3cdf0SGordon Ross 385186507a7Smyers typedef struct aml_resource_memory24 386186507a7Smyers { 387186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 38827f7c583Smyers UINT8 Flags; 38927f7c583Smyers UINT16 Minimum; 39027f7c583Smyers UINT16 Maximum; 39127f7c583Smyers UINT16 Alignment; 39227f7c583Smyers UINT16 AddressLength; 3937c478bd9Sstevel@tonic-gate 394186507a7Smyers } AML_RESOURCE_MEMORY24; 3957c478bd9Sstevel@tonic-gate 3967c478bd9Sstevel@tonic-gate 397186507a7Smyers typedef struct aml_resource_vendor_large 3987c478bd9Sstevel@tonic-gate { 399186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 4007c478bd9Sstevel@tonic-gate 401186507a7Smyers } AML_RESOURCE_VENDOR_LARGE; 4027c478bd9Sstevel@tonic-gate 4037c478bd9Sstevel@tonic-gate 404186507a7Smyers typedef struct aml_resource_memory32 4057c478bd9Sstevel@tonic-gate { 406186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 40727f7c583Smyers UINT8 Flags; 40827f7c583Smyers UINT32 Minimum; 40927f7c583Smyers UINT32 Maximum; 41027f7c583Smyers UINT32 Alignment; 41127f7c583Smyers UINT32 AddressLength; 4127c478bd9Sstevel@tonic-gate 413186507a7Smyers } AML_RESOURCE_MEMORY32; 4147c478bd9Sstevel@tonic-gate 4157c478bd9Sstevel@tonic-gate 416186507a7Smyers typedef struct aml_resource_fixed_memory32 4177c478bd9Sstevel@tonic-gate { 418186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 41927f7c583Smyers UINT8 Flags; 42027f7c583Smyers UINT32 Address; 42127f7c583Smyers UINT32 AddressLength; 4227c478bd9Sstevel@tonic-gate 423186507a7Smyers } AML_RESOURCE_FIXED_MEMORY32; 4247c478bd9Sstevel@tonic-gate 4257c478bd9Sstevel@tonic-gate 426186507a7Smyers #define AML_RESOURCE_ADDRESS_COMMON \ 42727f7c583Smyers UINT8 ResourceType; \ 42827f7c583Smyers UINT8 Flags; \ 42927f7c583Smyers UINT8 SpecificFlags; 430186507a7Smyers 431186507a7Smyers 432186507a7Smyers typedef struct aml_resource_address 433186507a7Smyers { 434186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 435186507a7Smyers AML_RESOURCE_ADDRESS_COMMON 436186507a7Smyers 437186507a7Smyers } AML_RESOURCE_ADDRESS; 438186507a7Smyers 439186507a7Smyers 440186507a7Smyers typedef struct aml_resource_extended_address64 441186507a7Smyers { 442186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 443186507a7Smyers AML_RESOURCE_ADDRESS_COMMON 44427f7c583Smyers UINT8 RevisionID; 44527f7c583Smyers UINT8 Reserved; 44627f7c583Smyers UINT64 Granularity; 44727f7c583Smyers UINT64 Minimum; 44827f7c583Smyers UINT64 Maximum; 44927f7c583Smyers UINT64 TranslationOffset; 45027f7c583Smyers UINT64 AddressLength; 45127f7c583Smyers UINT64 TypeSpecific; 4527c478bd9Sstevel@tonic-gate 453186507a7Smyers } AML_RESOURCE_EXTENDED_ADDRESS64; 4547c478bd9Sstevel@tonic-gate 455186507a7Smyers #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ 4567c478bd9Sstevel@tonic-gate 4577c478bd9Sstevel@tonic-gate 458186507a7Smyers typedef struct aml_resource_address64 4597c478bd9Sstevel@tonic-gate { 460186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 461186507a7Smyers AML_RESOURCE_ADDRESS_COMMON 46227f7c583Smyers UINT64 Granularity; 46327f7c583Smyers UINT64 Minimum; 46427f7c583Smyers UINT64 Maximum; 46527f7c583Smyers UINT64 TranslationOffset; 46627f7c583Smyers UINT64 AddressLength; 4677c478bd9Sstevel@tonic-gate 468186507a7Smyers } AML_RESOURCE_ADDRESS64; 4697c478bd9Sstevel@tonic-gate 4707c478bd9Sstevel@tonic-gate 471186507a7Smyers typedef struct aml_resource_address32 4727c478bd9Sstevel@tonic-gate { 473186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 474186507a7Smyers AML_RESOURCE_ADDRESS_COMMON 47527f7c583Smyers UINT32 Granularity; 47627f7c583Smyers UINT32 Minimum; 47727f7c583Smyers UINT32 Maximum; 47827f7c583Smyers UINT32 TranslationOffset; 47927f7c583Smyers UINT32 AddressLength; 4807c478bd9Sstevel@tonic-gate 481186507a7Smyers } AML_RESOURCE_ADDRESS32; 4827c478bd9Sstevel@tonic-gate 4837c478bd9Sstevel@tonic-gate 484186507a7Smyers typedef struct aml_resource_address16 4857c478bd9Sstevel@tonic-gate { 486186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 487186507a7Smyers AML_RESOURCE_ADDRESS_COMMON 48827f7c583Smyers UINT16 Granularity; 48927f7c583Smyers UINT16 Minimum; 49027f7c583Smyers UINT16 Maximum; 49127f7c583Smyers UINT16 TranslationOffset; 49227f7c583Smyers UINT16 AddressLength; 4937c478bd9Sstevel@tonic-gate 494186507a7Smyers } AML_RESOURCE_ADDRESS16; 4957c478bd9Sstevel@tonic-gate 4967c478bd9Sstevel@tonic-gate 497186507a7Smyers typedef struct aml_resource_extended_irq 4987c478bd9Sstevel@tonic-gate { 499186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 50027f7c583Smyers UINT8 Flags; 50127f7c583Smyers UINT8 InterruptCount; 50227f7c583Smyers UINT32 Interrupts[1]; 5037c478bd9Sstevel@tonic-gate /* ResSourceIndex, ResSource optional fields follow */ 5047c478bd9Sstevel@tonic-gate 505186507a7Smyers } AML_RESOURCE_EXTENDED_IRQ; 5067c478bd9Sstevel@tonic-gate 5077c478bd9Sstevel@tonic-gate 508186507a7Smyers typedef struct aml_resource_generic_register 5097c478bd9Sstevel@tonic-gate { 510186507a7Smyers AML_RESOURCE_LARGE_HEADER_COMMON 51127f7c583Smyers UINT8 AddressSpaceId; 51227f7c583Smyers UINT8 BitWidth; 51327f7c583Smyers UINT8 BitOffset; 51427f7c583Smyers UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ 51527f7c583Smyers UINT64 Address; 5167c478bd9Sstevel@tonic-gate 517186507a7Smyers } AML_RESOURCE_GENERIC_REGISTER; 5187c478bd9Sstevel@tonic-gate 5197b1019a6SJerry Jelinek 5207b1019a6SJerry Jelinek /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */ 5217b1019a6SJerry Jelinek 5227b1019a6SJerry Jelinek typedef struct aml_resource_gpio 5237b1019a6SJerry Jelinek { 5247b1019a6SJerry Jelinek AML_RESOURCE_LARGE_HEADER_COMMON 5257b1019a6SJerry Jelinek UINT8 RevisionId; 5267b1019a6SJerry Jelinek UINT8 ConnectionType; 5277b1019a6SJerry Jelinek UINT16 Flags; 5287b1019a6SJerry Jelinek UINT16 IntFlags; 5297b1019a6SJerry Jelinek UINT8 PinConfig; 5307b1019a6SJerry Jelinek UINT16 DriveStrength; 5317b1019a6SJerry Jelinek UINT16 DebounceTimeout; 5327b1019a6SJerry Jelinek UINT16 PinTableOffset; 5337b1019a6SJerry Jelinek UINT8 ResSourceIndex; 5347b1019a6SJerry Jelinek UINT16 ResSourceOffset; 5357b1019a6SJerry Jelinek UINT16 VendorOffset; 5367b1019a6SJerry Jelinek UINT16 VendorLength; 5377b1019a6SJerry Jelinek /* 5387b1019a6SJerry Jelinek * Optional fields follow immediately: 5397b1019a6SJerry Jelinek * 1) PIN list (Words) 5407b1019a6SJerry Jelinek * 2) Resource Source String 5417b1019a6SJerry Jelinek * 3) Vendor Data bytes 5427b1019a6SJerry Jelinek */ 5437b1019a6SJerry Jelinek 5447b1019a6SJerry Jelinek } AML_RESOURCE_GPIO; 5457b1019a6SJerry Jelinek 5467b1019a6SJerry Jelinek #define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */ 5477b1019a6SJerry Jelinek 5487b1019a6SJerry Jelinek /* Values for ConnectionType above */ 5497b1019a6SJerry Jelinek 5507b1019a6SJerry Jelinek #define AML_RESOURCE_GPIO_TYPE_INT 0 5517b1019a6SJerry Jelinek #define AML_RESOURCE_GPIO_TYPE_IO 1 5527b1019a6SJerry Jelinek #define AML_RESOURCE_MAX_GPIOTYPE 1 5537b1019a6SJerry Jelinek 5547b1019a6SJerry Jelinek 5557b1019a6SJerry Jelinek /* Common preamble for all serial descriptors (ACPI 5.0) */ 5567b1019a6SJerry Jelinek 5577b1019a6SJerry Jelinek #define AML_RESOURCE_SERIAL_COMMON \ 5587b1019a6SJerry Jelinek UINT8 RevisionId; \ 5597b1019a6SJerry Jelinek UINT8 ResSourceIndex; \ 5607b1019a6SJerry Jelinek UINT8 Type; \ 5617b1019a6SJerry Jelinek UINT8 Flags; \ 5627b1019a6SJerry Jelinek UINT16 TypeSpecificFlags; \ 5637b1019a6SJerry Jelinek UINT8 TypeRevisionId; \ 5647b1019a6SJerry Jelinek UINT16 TypeDataLength; \ 5657b1019a6SJerry Jelinek 5667b1019a6SJerry Jelinek /* Values for the type field above */ 5677b1019a6SJerry Jelinek 5687b1019a6SJerry Jelinek #define AML_RESOURCE_I2C_SERIALBUSTYPE 1 5697b1019a6SJerry Jelinek #define AML_RESOURCE_SPI_SERIALBUSTYPE 2 5707b1019a6SJerry Jelinek #define AML_RESOURCE_UART_SERIALBUSTYPE 3 5717b1019a6SJerry Jelinek #define AML_RESOURCE_MAX_SERIALBUSTYPE 3 5727b1019a6SJerry Jelinek #define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */ 5737b1019a6SJerry Jelinek 5747b1019a6SJerry Jelinek typedef struct aml_resource_common_serialbus 5757b1019a6SJerry Jelinek { 5767b1019a6SJerry Jelinek AML_RESOURCE_LARGE_HEADER_COMMON 5777b1019a6SJerry Jelinek AML_RESOURCE_SERIAL_COMMON 5787b1019a6SJerry Jelinek 5797b1019a6SJerry Jelinek } AML_RESOURCE_COMMON_SERIALBUS; 5807b1019a6SJerry Jelinek 5817b1019a6SJerry Jelinek typedef struct aml_resource_i2c_serialbus 5827b1019a6SJerry Jelinek { 5837b1019a6SJerry Jelinek AML_RESOURCE_LARGE_HEADER_COMMON 5847b1019a6SJerry Jelinek AML_RESOURCE_SERIAL_COMMON 5857b1019a6SJerry Jelinek UINT32 ConnectionSpeed; 5867b1019a6SJerry Jelinek UINT16 SlaveAddress; 5877b1019a6SJerry Jelinek /* 5887b1019a6SJerry Jelinek * Optional fields follow immediately: 5897b1019a6SJerry Jelinek * 1) Vendor Data bytes 5907b1019a6SJerry Jelinek * 2) Resource Source String 5917b1019a6SJerry Jelinek */ 5927b1019a6SJerry Jelinek 5937b1019a6SJerry Jelinek } AML_RESOURCE_I2C_SERIALBUS; 5947b1019a6SJerry Jelinek 5957b1019a6SJerry Jelinek #define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */ 5967b1019a6SJerry Jelinek #define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */ 5977b1019a6SJerry Jelinek #define AML_RESOURCE_I2C_MIN_DATA_LEN 6 5987b1019a6SJerry Jelinek 5997b1019a6SJerry Jelinek typedef struct aml_resource_spi_serialbus 6007b1019a6SJerry Jelinek { 6017b1019a6SJerry Jelinek AML_RESOURCE_LARGE_HEADER_COMMON 6027b1019a6SJerry Jelinek AML_RESOURCE_SERIAL_COMMON 6037b1019a6SJerry Jelinek UINT32 ConnectionSpeed; 6047b1019a6SJerry Jelinek UINT8 DataBitLength; 6057b1019a6SJerry Jelinek UINT8 ClockPhase; 6067b1019a6SJerry Jelinek UINT8 ClockPolarity; 6077b1019a6SJerry Jelinek UINT16 DeviceSelection; 6087b1019a6SJerry Jelinek /* 6097b1019a6SJerry Jelinek * Optional fields follow immediately: 6107b1019a6SJerry Jelinek * 1) Vendor Data bytes 6117b1019a6SJerry Jelinek * 2) Resource Source String 6127b1019a6SJerry Jelinek */ 6137b1019a6SJerry Jelinek 6147b1019a6SJerry Jelinek } AML_RESOURCE_SPI_SERIALBUS; 6157b1019a6SJerry Jelinek 6167b1019a6SJerry Jelinek #define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */ 6177b1019a6SJerry Jelinek #define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */ 6187b1019a6SJerry Jelinek #define AML_RESOURCE_SPI_MIN_DATA_LEN 9 6197b1019a6SJerry Jelinek 6207b1019a6SJerry Jelinek 6217b1019a6SJerry Jelinek typedef struct aml_resource_uart_serialbus 6227b1019a6SJerry Jelinek { 6237b1019a6SJerry Jelinek AML_RESOURCE_LARGE_HEADER_COMMON 6247b1019a6SJerry Jelinek AML_RESOURCE_SERIAL_COMMON 6257b1019a6SJerry Jelinek UINT32 DefaultBaudRate; 6267b1019a6SJerry Jelinek UINT16 RxFifoSize; 6277b1019a6SJerry Jelinek UINT16 TxFifoSize; 6287b1019a6SJerry Jelinek UINT8 Parity; 6297b1019a6SJerry Jelinek UINT8 LinesEnabled; 6307b1019a6SJerry Jelinek /* 6317b1019a6SJerry Jelinek * Optional fields follow immediately: 6327b1019a6SJerry Jelinek * 1) Vendor Data bytes 6337b1019a6SJerry Jelinek * 2) Resource Source String 6347b1019a6SJerry Jelinek */ 6357b1019a6SJerry Jelinek 6367b1019a6SJerry Jelinek } AML_RESOURCE_UART_SERIALBUS; 6377b1019a6SJerry Jelinek 6387b1019a6SJerry Jelinek #define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */ 6397b1019a6SJerry Jelinek #define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */ 6407b1019a6SJerry Jelinek #define AML_RESOURCE_UART_MIN_DATA_LEN 10 6417b1019a6SJerry Jelinek 642*35786f68SRobert Mustacchi typedef struct aml_resource_pin_function 643*35786f68SRobert Mustacchi { 644*35786f68SRobert Mustacchi AML_RESOURCE_LARGE_HEADER_COMMON 645*35786f68SRobert Mustacchi UINT8 RevisionId; 646*35786f68SRobert Mustacchi UINT16 Flags; 647*35786f68SRobert Mustacchi UINT8 PinConfig; 648*35786f68SRobert Mustacchi UINT16 FunctionNumber; 649*35786f68SRobert Mustacchi UINT16 PinTableOffset; 650*35786f68SRobert Mustacchi UINT8 ResSourceIndex; 651*35786f68SRobert Mustacchi UINT16 ResSourceOffset; 652*35786f68SRobert Mustacchi UINT16 VendorOffset; 653*35786f68SRobert Mustacchi UINT16 VendorLength; 654*35786f68SRobert Mustacchi /* 655*35786f68SRobert Mustacchi * Optional fields follow immediately: 656*35786f68SRobert Mustacchi * 1) PIN list (Words) 657*35786f68SRobert Mustacchi * 2) Resource Source String 658*35786f68SRobert Mustacchi * 3) Vendor Data bytes 659*35786f68SRobert Mustacchi */ 660*35786f68SRobert Mustacchi 661*35786f68SRobert Mustacchi } AML_RESOURCE_PIN_FUNCTION; 662*35786f68SRobert Mustacchi 663*35786f68SRobert Mustacchi #define AML_RESOURCE_PIN_FUNCTION_REVISION 1 /* ACPI 6.2 */ 664*35786f68SRobert Mustacchi 665*35786f68SRobert Mustacchi typedef struct aml_resource_pin_config 666*35786f68SRobert Mustacchi { 667*35786f68SRobert Mustacchi AML_RESOURCE_LARGE_HEADER_COMMON 668*35786f68SRobert Mustacchi UINT8 RevisionId; 669*35786f68SRobert Mustacchi UINT16 Flags; 670*35786f68SRobert Mustacchi UINT8 PinConfigType; 671*35786f68SRobert Mustacchi UINT32 PinConfigValue; 672*35786f68SRobert Mustacchi UINT16 PinTableOffset; 673*35786f68SRobert Mustacchi UINT8 ResSourceIndex; 674*35786f68SRobert Mustacchi UINT16 ResSourceOffset; 675*35786f68SRobert Mustacchi UINT16 VendorOffset; 676*35786f68SRobert Mustacchi UINT16 VendorLength; 677*35786f68SRobert Mustacchi /* 678*35786f68SRobert Mustacchi * Optional fields follow immediately: 679*35786f68SRobert Mustacchi * 1) PIN list (Words) 680*35786f68SRobert Mustacchi * 2) Resource Source String 681*35786f68SRobert Mustacchi * 3) Vendor Data bytes 682*35786f68SRobert Mustacchi */ 683*35786f68SRobert Mustacchi 684*35786f68SRobert Mustacchi } AML_RESOURCE_PIN_CONFIG; 685*35786f68SRobert Mustacchi 686*35786f68SRobert Mustacchi #define AML_RESOURCE_PIN_CONFIG_REVISION 1 /* ACPI 6.2 */ 687*35786f68SRobert Mustacchi 688*35786f68SRobert Mustacchi typedef struct aml_resource_pin_group 689*35786f68SRobert Mustacchi { 690*35786f68SRobert Mustacchi AML_RESOURCE_LARGE_HEADER_COMMON 691*35786f68SRobert Mustacchi UINT8 RevisionId; 692*35786f68SRobert Mustacchi UINT16 Flags; 693*35786f68SRobert Mustacchi UINT16 PinTableOffset; 694*35786f68SRobert Mustacchi UINT16 LabelOffset; 695*35786f68SRobert Mustacchi UINT16 VendorOffset; 696*35786f68SRobert Mustacchi UINT16 VendorLength; 697*35786f68SRobert Mustacchi /* 698*35786f68SRobert Mustacchi * Optional fields follow immediately: 699*35786f68SRobert Mustacchi * 1) PIN list (Words) 700*35786f68SRobert Mustacchi * 2) Resource Label String 701*35786f68SRobert Mustacchi * 3) Vendor Data bytes 702*35786f68SRobert Mustacchi */ 703*35786f68SRobert Mustacchi 704*35786f68SRobert Mustacchi } AML_RESOURCE_PIN_GROUP; 705*35786f68SRobert Mustacchi 706*35786f68SRobert Mustacchi #define AML_RESOURCE_PIN_GROUP_REVISION 1 /* ACPI 6.2 */ 707*35786f68SRobert Mustacchi 708*35786f68SRobert Mustacchi typedef struct aml_resource_pin_group_function 709*35786f68SRobert Mustacchi { 710*35786f68SRobert Mustacchi AML_RESOURCE_LARGE_HEADER_COMMON 711*35786f68SRobert Mustacchi UINT8 RevisionId; 712*35786f68SRobert Mustacchi UINT16 Flags; 713*35786f68SRobert Mustacchi UINT16 FunctionNumber; 714*35786f68SRobert Mustacchi UINT8 ResSourceIndex; 715*35786f68SRobert Mustacchi UINT16 ResSourceOffset; 716*35786f68SRobert Mustacchi UINT16 ResSourceLabelOffset; 717*35786f68SRobert Mustacchi UINT16 VendorOffset; 718*35786f68SRobert Mustacchi UINT16 VendorLength; 719*35786f68SRobert Mustacchi /* 720*35786f68SRobert Mustacchi * Optional fields follow immediately: 721*35786f68SRobert Mustacchi * 1) Resource Source String 722*35786f68SRobert Mustacchi * 2) Resource Source Label String 723*35786f68SRobert Mustacchi * 3) Vendor Data bytes 724*35786f68SRobert Mustacchi */ 725*35786f68SRobert Mustacchi 726*35786f68SRobert Mustacchi } AML_RESOURCE_PIN_GROUP_FUNCTION; 727*35786f68SRobert Mustacchi 728*35786f68SRobert Mustacchi #define AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION 1 /* ACPI 6.2 */ 729*35786f68SRobert Mustacchi 730*35786f68SRobert Mustacchi typedef struct aml_resource_pin_group_config 731*35786f68SRobert Mustacchi { 732*35786f68SRobert Mustacchi AML_RESOURCE_LARGE_HEADER_COMMON 733*35786f68SRobert Mustacchi UINT8 RevisionId; 734*35786f68SRobert Mustacchi UINT16 Flags; 735*35786f68SRobert Mustacchi UINT8 PinConfigType; 736*35786f68SRobert Mustacchi UINT32 PinConfigValue; 737*35786f68SRobert Mustacchi UINT8 ResSourceIndex; 738*35786f68SRobert Mustacchi UINT16 ResSourceOffset; 739*35786f68SRobert Mustacchi UINT16 ResSourceLabelOffset; 740*35786f68SRobert Mustacchi UINT16 VendorOffset; 741*35786f68SRobert Mustacchi UINT16 VendorLength; 742*35786f68SRobert Mustacchi /* 743*35786f68SRobert Mustacchi * Optional fields follow immediately: 744*35786f68SRobert Mustacchi * 1) Resource Source String 745*35786f68SRobert Mustacchi * 2) Resource Source Label String 746*35786f68SRobert Mustacchi * 3) Vendor Data bytes 747*35786f68SRobert Mustacchi */ 748*35786f68SRobert Mustacchi 749*35786f68SRobert Mustacchi } AML_RESOURCE_PIN_GROUP_CONFIG; 750*35786f68SRobert Mustacchi 751*35786f68SRobert Mustacchi #define AML_RESOURCE_PIN_GROUP_CONFIG_REVISION 1 /* ACPI 6.2 */ 7527b1019a6SJerry Jelinek 7537c478bd9Sstevel@tonic-gate /* restore default alignment */ 7547c478bd9Sstevel@tonic-gate 7557c478bd9Sstevel@tonic-gate #pragma pack() 7567c478bd9Sstevel@tonic-gate 7577c478bd9Sstevel@tonic-gate /* Union of all resource descriptors, so we can allocate the worst case */ 7587c478bd9Sstevel@tonic-gate 759186507a7Smyers typedef union aml_resource 7607c478bd9Sstevel@tonic-gate { 761186507a7Smyers /* Descriptor headers */ 762186507a7Smyers 76327f7c583Smyers UINT8 DescriptorType; 76427f7c583Smyers AML_RESOURCE_SMALL_HEADER SmallHeader; 76527f7c583Smyers AML_RESOURCE_LARGE_HEADER LargeHeader; 766186507a7Smyers 767186507a7Smyers /* Small resource descriptors */ 768186507a7Smyers 76927f7c583Smyers AML_RESOURCE_IRQ Irq; 77027f7c583Smyers AML_RESOURCE_DMA Dma; 77127f7c583Smyers AML_RESOURCE_START_DEPENDENT StartDpf; 77227f7c583Smyers AML_RESOURCE_END_DEPENDENT EndDpf; 77327f7c583Smyers AML_RESOURCE_IO Io; 77427f7c583Smyers AML_RESOURCE_FIXED_IO FixedIo; 7757b1019a6SJerry Jelinek AML_RESOURCE_FIXED_DMA FixedDma; 77627f7c583Smyers AML_RESOURCE_VENDOR_SMALL VendorSmall; 77727f7c583Smyers AML_RESOURCE_END_TAG EndTag; 778186507a7Smyers 779186507a7Smyers /* Large resource descriptors */ 780186507a7Smyers 78127f7c583Smyers AML_RESOURCE_MEMORY24 Memory24; 78227f7c583Smyers AML_RESOURCE_GENERIC_REGISTER GenericReg; 78327f7c583Smyers AML_RESOURCE_VENDOR_LARGE VendorLarge; 78427f7c583Smyers AML_RESOURCE_MEMORY32 Memory32; 78527f7c583Smyers AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; 78627f7c583Smyers AML_RESOURCE_ADDRESS16 Address16; 78727f7c583Smyers AML_RESOURCE_ADDRESS32 Address32; 78827f7c583Smyers AML_RESOURCE_ADDRESS64 Address64; 78927f7c583Smyers AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 79027f7c583Smyers AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; 7917b1019a6SJerry Jelinek AML_RESOURCE_GPIO Gpio; 7927b1019a6SJerry Jelinek AML_RESOURCE_I2C_SERIALBUS I2cSerialBus; 7937b1019a6SJerry Jelinek AML_RESOURCE_SPI_SERIALBUS SpiSerialBus; 7947b1019a6SJerry Jelinek AML_RESOURCE_UART_SERIALBUS UartSerialBus; 7957b1019a6SJerry Jelinek AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus; 796*35786f68SRobert Mustacchi AML_RESOURCE_PIN_FUNCTION PinFunction; 797*35786f68SRobert Mustacchi AML_RESOURCE_PIN_CONFIG PinConfig; 798*35786f68SRobert Mustacchi AML_RESOURCE_PIN_GROUP PinGroup; 799*35786f68SRobert Mustacchi AML_RESOURCE_PIN_GROUP_FUNCTION PinGroupFunction; 800*35786f68SRobert Mustacchi AML_RESOURCE_PIN_GROUP_CONFIG PinGroupConfig; 801186507a7Smyers 802186507a7Smyers /* Utility overlays */ 803186507a7Smyers 80427f7c583Smyers AML_RESOURCE_ADDRESS Address; 80527f7c583Smyers UINT32 DwordItem; 80627f7c583Smyers UINT16 WordItem; 80727f7c583Smyers UINT8 ByteItem; 808186507a7Smyers 809186507a7Smyers } AML_RESOURCE; 8107c478bd9Sstevel@tonic-gate 8117c478bd9Sstevel@tonic-gate 8127b1019a6SJerry Jelinek /* Interfaces used by both the disassembler and compiler */ 8137b1019a6SJerry Jelinek 8147b1019a6SJerry Jelinek void 8157b1019a6SJerry Jelinek MpSaveGpioInfo ( 8167b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *Op, 8177b1019a6SJerry Jelinek AML_RESOURCE *Resource, 8187b1019a6SJerry Jelinek UINT32 PinCount, 8197b1019a6SJerry Jelinek UINT16 *PinList, 8207b1019a6SJerry Jelinek char *DeviceName); 8217b1019a6SJerry Jelinek 8227b1019a6SJerry Jelinek void 8237b1019a6SJerry Jelinek MpSaveSerialInfo ( 8247b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *Op, 8257b1019a6SJerry Jelinek AML_RESOURCE *Resource, 8267b1019a6SJerry Jelinek char *DeviceName); 8277b1019a6SJerry Jelinek 8287b1019a6SJerry Jelinek char * 8297b1019a6SJerry Jelinek MpGetHidFromParseTree ( 8307b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE *HidNode); 8317b1019a6SJerry Jelinek 8327b1019a6SJerry Jelinek char * 8337b1019a6SJerry Jelinek MpGetHidViaNamestring ( 8347b1019a6SJerry Jelinek char *DeviceName); 8357b1019a6SJerry Jelinek 8367b1019a6SJerry Jelinek char * 8377b1019a6SJerry Jelinek MpGetConnectionInfo ( 8387b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *Op, 8397b1019a6SJerry Jelinek UINT32 PinIndex, 8407b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE **TargetNode, 8417b1019a6SJerry Jelinek char **TargetName); 8427b1019a6SJerry Jelinek 8437b1019a6SJerry Jelinek char * 8447b1019a6SJerry Jelinek MpGetParentDeviceHid ( 8457b1019a6SJerry Jelinek ACPI_PARSE_OBJECT *Op, 8467b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE **TargetNode, 8477b1019a6SJerry Jelinek char **ParentDeviceName); 8487b1019a6SJerry Jelinek 8497b1019a6SJerry Jelinek char * 8507b1019a6SJerry Jelinek MpGetDdnValue ( 8517b1019a6SJerry Jelinek char *DeviceName); 8527b1019a6SJerry Jelinek 8537b1019a6SJerry Jelinek char * 8547b1019a6SJerry Jelinek MpGetHidValue ( 8557b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE *DeviceNode); 8567b1019a6SJerry Jelinek 8577b1019a6SJerry Jelinek #endif 858