1a9f12690SJung-uk Kim /****************************************************************************** 2a9f12690SJung-uk Kim * 3a9f12690SJung-uk Kim * Module Name: amlresrc.h - AML resource descriptors 4a9f12690SJung-uk Kim * 5a9f12690SJung-uk Kim *****************************************************************************/ 6a9f12690SJung-uk Kim 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 11*58308fadSJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. 12a9f12690SJung-uk Kim * All rights reserved. 13a9f12690SJung-uk Kim * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-uk Kim * 119d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 120d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 121d244b227SJung-uk Kim * are met: 122d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 123d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 124d244b227SJung-uk Kim * without modification. 125d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 127d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 128d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 129d244b227SJung-uk Kim * binary redistribution. 130d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 131d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 132d244b227SJung-uk Kim * from this software without specific prior written permission. 133a9f12690SJung-uk Kim * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 147d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 148d244b227SJung-uk Kim * Software Foundation. 149a9f12690SJung-uk Kim * 1500d84335fSJung-uk Kim *****************************************************************************/ 151a9f12690SJung-uk Kim 152a9f12690SJung-uk Kim /* acpisrc:StructDefs -- for acpisrc conversion */ 153a9f12690SJung-uk Kim 154a9f12690SJung-uk Kim #ifndef __AMLRESRC_H 155a9f12690SJung-uk Kim #define __AMLRESRC_H 156a9f12690SJung-uk Kim 157a9f12690SJung-uk Kim 158a9f12690SJung-uk Kim /* 159a9f12690SJung-uk Kim * Resource descriptor tags, as defined in the ACPI specification. 160a9f12690SJung-uk Kim * Used to symbolically reference fields within a descriptor. 161a9f12690SJung-uk Kim */ 162a9f12690SJung-uk Kim #define ACPI_RESTAG_ADDRESS "_ADR" 163a9f12690SJung-uk Kim #define ACPI_RESTAG_ALIGNMENT "_ALN" 164a9f12690SJung-uk Kim #define ACPI_RESTAG_ADDRESSSPACE "_ASI" 165a9f12690SJung-uk Kim #define ACPI_RESTAG_ACCESSSIZE "_ASZ" 166a9f12690SJung-uk Kim #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" 167a9f12690SJung-uk Kim #define ACPI_RESTAG_BASEADDRESS "_BAS" 168a9f12690SJung-uk Kim #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ 1693f0275a0SJung-uk Kim #define ACPI_RESTAG_DEBOUNCETIME "_DBT" 170a9f12690SJung-uk Kim #define ACPI_RESTAG_DECODE "_DEC" 1713f0275a0SJung-uk Kim #define ACPI_RESTAG_DEVICEPOLARITY "_DPL" 172a9f12690SJung-uk Kim #define ACPI_RESTAG_DMA "_DMA" 173a9f12690SJung-uk Kim #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ 1743f0275a0SJung-uk Kim #define ACPI_RESTAG_DRIVESTRENGTH "_DRS" 1753f0275a0SJung-uk Kim #define ACPI_RESTAG_ENDIANNESS "_END" 1763f0275a0SJung-uk Kim #define ACPI_RESTAG_FLOWCONTROL "_FLC" 177af051161SJung-uk Kim #define ACPI_RESTAG_FUNCTION "_FUN" 178a9f12690SJung-uk Kim #define ACPI_RESTAG_GRANULARITY "_GRA" 179a9f12690SJung-uk Kim #define ACPI_RESTAG_INTERRUPT "_INT" 180a9f12690SJung-uk Kim #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ 181a9f12690SJung-uk Kim #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ 182a9f12690SJung-uk Kim #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ 1833f0275a0SJung-uk Kim #define ACPI_RESTAG_IORESTRICTION "_IOR" 184a9f12690SJung-uk Kim #define ACPI_RESTAG_LENGTH "_LEN" 1853f0275a0SJung-uk Kim #define ACPI_RESTAG_LINE "_LIN" 186cfd1ed46SJung-uk Kim #define ACPI_RESTAG_LOCALPORT "_PRT" 187a9f12690SJung-uk Kim #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ 188a9f12690SJung-uk Kim #define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ 189a9f12690SJung-uk Kim #define ACPI_RESTAG_MAXADDR "_MAX" 190a9f12690SJung-uk Kim #define ACPI_RESTAG_MINADDR "_MIN" 191a9f12690SJung-uk Kim #define ACPI_RESTAG_MAXTYPE "_MAF" 192a9f12690SJung-uk Kim #define ACPI_RESTAG_MINTYPE "_MIF" 1933f0275a0SJung-uk Kim #define ACPI_RESTAG_MODE "_MOD" 1943f0275a0SJung-uk Kim #define ACPI_RESTAG_PARITY "_PAR" 1953f0275a0SJung-uk Kim #define ACPI_RESTAG_PHASE "_PHA" 196cfd1ed46SJung-uk Kim #define ACPI_RESTAG_PHYTYPE "_PHY" 1973f0275a0SJung-uk Kim #define ACPI_RESTAG_PIN "_PIN" 1983f0275a0SJung-uk Kim #define ACPI_RESTAG_PINCONFIG "_PPI" 199af051161SJung-uk Kim #define ACPI_RESTAG_PINCONFIG_TYPE "_TYP" 200af051161SJung-uk Kim #define ACPI_RESTAG_PINCONFIG_VALUE "_VAL" 2013f0275a0SJung-uk Kim #define ACPI_RESTAG_POLARITY "_POL" 202a9f12690SJung-uk Kim #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" 203a9f12690SJung-uk Kim #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" 204a9f12690SJung-uk Kim #define ACPI_RESTAG_RANGETYPE "_RNG" 205a9f12690SJung-uk Kim #define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ 2063f0275a0SJung-uk Kim #define ACPI_RESTAG_LENGTH_RX "_RXL" 2073f0275a0SJung-uk Kim #define ACPI_RESTAG_LENGTH_TX "_TXL" 2083f0275a0SJung-uk Kim #define ACPI_RESTAG_SLAVEMODE "_SLV" 2093f0275a0SJung-uk Kim #define ACPI_RESTAG_SPEED "_SPE" 2103f0275a0SJung-uk Kim #define ACPI_RESTAG_STOPBITS "_STB" 211a9f12690SJung-uk Kim #define ACPI_RESTAG_TRANSLATION "_TRA" 212a9f12690SJung-uk Kim #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ 213a9f12690SJung-uk Kim #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ 214a9f12690SJung-uk Kim #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ 2153f0275a0SJung-uk Kim #define ACPI_RESTAG_VENDORDATA "_VEN" 216722b1667SJung-uk Kim #define ACPI_RESTAG_FQN "_FQN" 217722b1667SJung-uk Kim #define ACPI_RESTAG_FQD "_FQD" 218a9f12690SJung-uk Kim 219a9f12690SJung-uk Kim 220a9f12690SJung-uk Kim /* Default sizes for "small" resource descriptors */ 221a9f12690SJung-uk Kim 222a9f12690SJung-uk Kim #define ASL_RDESC_IRQ_SIZE 0x02 223a9f12690SJung-uk Kim #define ASL_RDESC_DMA_SIZE 0x02 224a9f12690SJung-uk Kim #define ASL_RDESC_ST_DEPEND_SIZE 0x00 225a9f12690SJung-uk Kim #define ASL_RDESC_END_DEPEND_SIZE 0x00 226a9f12690SJung-uk Kim #define ASL_RDESC_IO_SIZE 0x07 227a9f12690SJung-uk Kim #define ASL_RDESC_FIXED_IO_SIZE 0x03 2283f0275a0SJung-uk Kim #define ASL_RDESC_FIXED_DMA_SIZE 0x05 229a9f12690SJung-uk Kim #define ASL_RDESC_END_TAG_SIZE 0x01 230a9f12690SJung-uk Kim 231a9f12690SJung-uk Kim 232a9f12690SJung-uk Kim typedef struct asl_resource_node 233a9f12690SJung-uk Kim { 234a9f12690SJung-uk Kim UINT32 BufferLength; 235a9f12690SJung-uk Kim void *Buffer; 236a9f12690SJung-uk Kim struct asl_resource_node *Next; 237a9f12690SJung-uk Kim 238a9f12690SJung-uk Kim } ASL_RESOURCE_NODE; 239a9f12690SJung-uk Kim 240313a0c13SJung-uk Kim typedef struct asl_resource_info 241313a0c13SJung-uk Kim { 242313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *DescriptorTypeOp; /* Resource descriptor parse node */ 243313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *MappingOp; /* Used for mapfile support */ 244313a0c13SJung-uk Kim UINT32 CurrentByteOffset; /* Offset in resource template */ 245313a0c13SJung-uk Kim 246313a0c13SJung-uk Kim } ASL_RESOURCE_INFO; 247313a0c13SJung-uk Kim 248a9f12690SJung-uk Kim 249a9f12690SJung-uk Kim /* Macros used to generate AML resource length fields */ 250a9f12690SJung-uk Kim 251a9f12690SJung-uk Kim #define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) 252a9f12690SJung-uk Kim #define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) 253a9f12690SJung-uk Kim 254a9f12690SJung-uk Kim /* 255a9f12690SJung-uk Kim * Resource descriptors defined in the ACPI specification. 256a9f12690SJung-uk Kim * 257a9f12690SJung-uk Kim * Packing/alignment must be BYTE because these descriptors 258a9f12690SJung-uk Kim * are used to overlay the raw AML byte stream. 259a9f12690SJung-uk Kim */ 260a9f12690SJung-uk Kim #pragma pack(1) 261a9f12690SJung-uk Kim 262a9f12690SJung-uk Kim /* 263a9f12690SJung-uk Kim * SMALL descriptors 264a9f12690SJung-uk Kim */ 265a9f12690SJung-uk Kim #define AML_RESOURCE_SMALL_HEADER_COMMON \ 266a9f12690SJung-uk Kim UINT8 DescriptorType; 267a9f12690SJung-uk Kim 268a9f12690SJung-uk Kim typedef struct aml_resource_small_header 269a9f12690SJung-uk Kim { 270a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 271a9f12690SJung-uk Kim 272a9f12690SJung-uk Kim } AML_RESOURCE_SMALL_HEADER; 273a9f12690SJung-uk Kim 274a9f12690SJung-uk Kim 275a9f12690SJung-uk Kim typedef struct aml_resource_irq 276a9f12690SJung-uk Kim { 277a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 278a9f12690SJung-uk Kim UINT16 IrqMask; 279a9f12690SJung-uk Kim UINT8 Flags; 280a9f12690SJung-uk Kim 281a9f12690SJung-uk Kim } AML_RESOURCE_IRQ; 282a9f12690SJung-uk Kim 283a9f12690SJung-uk Kim 284a9f12690SJung-uk Kim typedef struct aml_resource_irq_noflags 285a9f12690SJung-uk Kim { 286a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 287a9f12690SJung-uk Kim UINT16 IrqMask; 288a9f12690SJung-uk Kim 289a9f12690SJung-uk Kim } AML_RESOURCE_IRQ_NOFLAGS; 290a9f12690SJung-uk Kim 291a9f12690SJung-uk Kim 292a9f12690SJung-uk Kim typedef struct aml_resource_dma 293a9f12690SJung-uk Kim { 294a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 295a9f12690SJung-uk Kim UINT8 DmaChannelMask; 296a9f12690SJung-uk Kim UINT8 Flags; 297a9f12690SJung-uk Kim 298a9f12690SJung-uk Kim } AML_RESOURCE_DMA; 299a9f12690SJung-uk Kim 300a9f12690SJung-uk Kim 301a9f12690SJung-uk Kim typedef struct aml_resource_start_dependent 302a9f12690SJung-uk Kim { 303a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 304a9f12690SJung-uk Kim UINT8 Flags; 305a9f12690SJung-uk Kim 306a9f12690SJung-uk Kim } AML_RESOURCE_START_DEPENDENT; 307a9f12690SJung-uk Kim 308a9f12690SJung-uk Kim 309a9f12690SJung-uk Kim typedef struct aml_resource_start_dependent_noprio 310a9f12690SJung-uk Kim { 311a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 312a9f12690SJung-uk Kim 313a9f12690SJung-uk Kim } AML_RESOURCE_START_DEPENDENT_NOPRIO; 314a9f12690SJung-uk Kim 315a9f12690SJung-uk Kim 316a9f12690SJung-uk Kim typedef struct aml_resource_end_dependent 317a9f12690SJung-uk Kim { 318a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 319a9f12690SJung-uk Kim 320a9f12690SJung-uk Kim } AML_RESOURCE_END_DEPENDENT; 321a9f12690SJung-uk Kim 322a9f12690SJung-uk Kim 323a9f12690SJung-uk Kim typedef struct aml_resource_io 324a9f12690SJung-uk Kim { 325a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 326a9f12690SJung-uk Kim UINT8 Flags; 327a9f12690SJung-uk Kim UINT16 Minimum; 328a9f12690SJung-uk Kim UINT16 Maximum; 329a9f12690SJung-uk Kim UINT8 Alignment; 330a9f12690SJung-uk Kim UINT8 AddressLength; 331a9f12690SJung-uk Kim 332a9f12690SJung-uk Kim } AML_RESOURCE_IO; 333a9f12690SJung-uk Kim 334a9f12690SJung-uk Kim 335a9f12690SJung-uk Kim typedef struct aml_resource_fixed_io 336a9f12690SJung-uk Kim { 337a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 338a9f12690SJung-uk Kim UINT16 Address; 339a9f12690SJung-uk Kim UINT8 AddressLength; 340a9f12690SJung-uk Kim 341a9f12690SJung-uk Kim } AML_RESOURCE_FIXED_IO; 342a9f12690SJung-uk Kim 343a9f12690SJung-uk Kim 344a9f12690SJung-uk Kim typedef struct aml_resource_vendor_small 345a9f12690SJung-uk Kim { 346a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 347a9f12690SJung-uk Kim 348a9f12690SJung-uk Kim } AML_RESOURCE_VENDOR_SMALL; 349a9f12690SJung-uk Kim 350a9f12690SJung-uk Kim 351a9f12690SJung-uk Kim typedef struct aml_resource_end_tag 352a9f12690SJung-uk Kim { 353a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 354a9f12690SJung-uk Kim UINT8 Checksum; 355a9f12690SJung-uk Kim 356a9f12690SJung-uk Kim } AML_RESOURCE_END_TAG; 357a9f12690SJung-uk Kim 358a9f12690SJung-uk Kim 3593f0275a0SJung-uk Kim typedef struct aml_resource_fixed_dma 3603f0275a0SJung-uk Kim { 3613f0275a0SJung-uk Kim AML_RESOURCE_SMALL_HEADER_COMMON 3623f0275a0SJung-uk Kim UINT16 RequestLines; 3633f0275a0SJung-uk Kim UINT16 Channels; 3643f0275a0SJung-uk Kim UINT8 Width; 3653f0275a0SJung-uk Kim 3663f0275a0SJung-uk Kim } AML_RESOURCE_FIXED_DMA; 3673f0275a0SJung-uk Kim 3683f0275a0SJung-uk Kim 369a9f12690SJung-uk Kim /* 370a9f12690SJung-uk Kim * LARGE descriptors 371a9f12690SJung-uk Kim */ 372a9f12690SJung-uk Kim #define AML_RESOURCE_LARGE_HEADER_COMMON \ 373a9f12690SJung-uk Kim UINT8 DescriptorType;\ 374a9f12690SJung-uk Kim UINT16 ResourceLength; 375a9f12690SJung-uk Kim 376a9f12690SJung-uk Kim typedef struct aml_resource_large_header 377a9f12690SJung-uk Kim { 378a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 379a9f12690SJung-uk Kim 380a9f12690SJung-uk Kim } AML_RESOURCE_LARGE_HEADER; 381a9f12690SJung-uk Kim 382a9f12690SJung-uk Kim 3833f5e024cSJung-uk Kim /* General Flags for address space resource descriptors */ 3843f5e024cSJung-uk Kim 3853f5e024cSJung-uk Kim #define ACPI_RESOURCE_FLAG_DEC 2 3863f5e024cSJung-uk Kim #define ACPI_RESOURCE_FLAG_MIF 4 3873f5e024cSJung-uk Kim #define ACPI_RESOURCE_FLAG_MAF 8 3883f5e024cSJung-uk Kim 389a9f12690SJung-uk Kim typedef struct aml_resource_memory24 390a9f12690SJung-uk Kim { 391a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 392a9f12690SJung-uk Kim UINT8 Flags; 393a9f12690SJung-uk Kim UINT16 Minimum; 394a9f12690SJung-uk Kim UINT16 Maximum; 395a9f12690SJung-uk Kim UINT16 Alignment; 396a9f12690SJung-uk Kim UINT16 AddressLength; 397a9f12690SJung-uk Kim 398a9f12690SJung-uk Kim } AML_RESOURCE_MEMORY24; 399a9f12690SJung-uk Kim 400a9f12690SJung-uk Kim 401a9f12690SJung-uk Kim typedef struct aml_resource_vendor_large 402a9f12690SJung-uk Kim { 403a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 404a9f12690SJung-uk Kim 405a9f12690SJung-uk Kim } AML_RESOURCE_VENDOR_LARGE; 406a9f12690SJung-uk Kim 407a9f12690SJung-uk Kim 408a9f12690SJung-uk Kim typedef struct aml_resource_memory32 409a9f12690SJung-uk Kim { 410a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 411a9f12690SJung-uk Kim UINT8 Flags; 412a9f12690SJung-uk Kim UINT32 Minimum; 413a9f12690SJung-uk Kim UINT32 Maximum; 414a9f12690SJung-uk Kim UINT32 Alignment; 415a9f12690SJung-uk Kim UINT32 AddressLength; 416a9f12690SJung-uk Kim 417a9f12690SJung-uk Kim } AML_RESOURCE_MEMORY32; 418a9f12690SJung-uk Kim 419a9f12690SJung-uk Kim 420a9f12690SJung-uk Kim typedef struct aml_resource_fixed_memory32 421a9f12690SJung-uk Kim { 422a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 423a9f12690SJung-uk Kim UINT8 Flags; 424a9f12690SJung-uk Kim UINT32 Address; 425a9f12690SJung-uk Kim UINT32 AddressLength; 426a9f12690SJung-uk Kim 427a9f12690SJung-uk Kim } AML_RESOURCE_FIXED_MEMORY32; 428a9f12690SJung-uk Kim 429a9f12690SJung-uk Kim 430a9f12690SJung-uk Kim #define AML_RESOURCE_ADDRESS_COMMON \ 431a9f12690SJung-uk Kim UINT8 ResourceType; \ 432a9f12690SJung-uk Kim UINT8 Flags; \ 433a9f12690SJung-uk Kim UINT8 SpecificFlags; 434a9f12690SJung-uk Kim 435a9f12690SJung-uk Kim 436a9f12690SJung-uk Kim typedef struct aml_resource_address 437a9f12690SJung-uk Kim { 438a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 439a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS_COMMON 440a9f12690SJung-uk Kim 441a9f12690SJung-uk Kim } AML_RESOURCE_ADDRESS; 442a9f12690SJung-uk Kim 443a9f12690SJung-uk Kim 444a9f12690SJung-uk Kim typedef struct aml_resource_extended_address64 445a9f12690SJung-uk Kim { 446a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 447a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS_COMMON 448a9f12690SJung-uk Kim UINT8 RevisionID; 449a9f12690SJung-uk Kim UINT8 Reserved; 450a9f12690SJung-uk Kim UINT64 Granularity; 451a9f12690SJung-uk Kim UINT64 Minimum; 452a9f12690SJung-uk Kim UINT64 Maximum; 453a9f12690SJung-uk Kim UINT64 TranslationOffset; 454a9f12690SJung-uk Kim UINT64 AddressLength; 455a9f12690SJung-uk Kim UINT64 TypeSpecific; 456a9f12690SJung-uk Kim 457a9f12690SJung-uk Kim } AML_RESOURCE_EXTENDED_ADDRESS64; 458a9f12690SJung-uk Kim 459a9f12690SJung-uk Kim #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ 460a9f12690SJung-uk Kim 461a9f12690SJung-uk Kim 462a9f12690SJung-uk Kim typedef struct aml_resource_address64 463a9f12690SJung-uk Kim { 464a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 465a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS_COMMON 466a9f12690SJung-uk Kim UINT64 Granularity; 467a9f12690SJung-uk Kim UINT64 Minimum; 468a9f12690SJung-uk Kim UINT64 Maximum; 469a9f12690SJung-uk Kim UINT64 TranslationOffset; 470a9f12690SJung-uk Kim UINT64 AddressLength; 471a9f12690SJung-uk Kim 472a9f12690SJung-uk Kim } AML_RESOURCE_ADDRESS64; 473a9f12690SJung-uk Kim 474a9f12690SJung-uk Kim 475a9f12690SJung-uk Kim typedef struct aml_resource_address32 476a9f12690SJung-uk Kim { 477a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 478a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS_COMMON 479a9f12690SJung-uk Kim UINT32 Granularity; 480a9f12690SJung-uk Kim UINT32 Minimum; 481a9f12690SJung-uk Kim UINT32 Maximum; 482a9f12690SJung-uk Kim UINT32 TranslationOffset; 483a9f12690SJung-uk Kim UINT32 AddressLength; 484a9f12690SJung-uk Kim 485a9f12690SJung-uk Kim } AML_RESOURCE_ADDRESS32; 486a9f12690SJung-uk Kim 487a9f12690SJung-uk Kim 488a9f12690SJung-uk Kim typedef struct aml_resource_address16 489a9f12690SJung-uk Kim { 490a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 491a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS_COMMON 492a9f12690SJung-uk Kim UINT16 Granularity; 493a9f12690SJung-uk Kim UINT16 Minimum; 494a9f12690SJung-uk Kim UINT16 Maximum; 495a9f12690SJung-uk Kim UINT16 TranslationOffset; 496a9f12690SJung-uk Kim UINT16 AddressLength; 497a9f12690SJung-uk Kim 498a9f12690SJung-uk Kim } AML_RESOURCE_ADDRESS16; 499a9f12690SJung-uk Kim 500a9f12690SJung-uk Kim 501a9f12690SJung-uk Kim typedef struct aml_resource_extended_irq 502a9f12690SJung-uk Kim { 503a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 504a9f12690SJung-uk Kim UINT8 Flags; 505a9f12690SJung-uk Kim UINT8 InterruptCount; 506722b1667SJung-uk Kim union { 507722b1667SJung-uk Kim UINT32 Interrupt; 508722b1667SJung-uk Kim ACPI_FLEX_ARRAY(UINT32, Interrupts); 50907c64d74SJung-uk Kim }; 510a9f12690SJung-uk Kim /* ResSourceIndex, ResSource optional fields follow */ 511a9f12690SJung-uk Kim 512a9f12690SJung-uk Kim } AML_RESOURCE_EXTENDED_IRQ; 513a9f12690SJung-uk Kim 514a9f12690SJung-uk Kim 515a9f12690SJung-uk Kim typedef struct aml_resource_generic_register 516a9f12690SJung-uk Kim { 517a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 518a9f12690SJung-uk Kim UINT8 AddressSpaceId; 519a9f12690SJung-uk Kim UINT8 BitWidth; 520a9f12690SJung-uk Kim UINT8 BitOffset; 521a9f12690SJung-uk Kim UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ 522a9f12690SJung-uk Kim UINT64 Address; 523a9f12690SJung-uk Kim 524a9f12690SJung-uk Kim } AML_RESOURCE_GENERIC_REGISTER; 525a9f12690SJung-uk Kim 5263f0275a0SJung-uk Kim 5273f0275a0SJung-uk Kim /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */ 5283f0275a0SJung-uk Kim 5293f0275a0SJung-uk Kim typedef struct aml_resource_gpio 5303f0275a0SJung-uk Kim { 5313f0275a0SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 5323f0275a0SJung-uk Kim UINT8 RevisionId; 5333f0275a0SJung-uk Kim UINT8 ConnectionType; 5343f0275a0SJung-uk Kim UINT16 Flags; 5353f0275a0SJung-uk Kim UINT16 IntFlags; 5363f0275a0SJung-uk Kim UINT8 PinConfig; 5373f0275a0SJung-uk Kim UINT16 DriveStrength; 5383f0275a0SJung-uk Kim UINT16 DebounceTimeout; 5393f0275a0SJung-uk Kim UINT16 PinTableOffset; 5403f0275a0SJung-uk Kim UINT8 ResSourceIndex; 5413f0275a0SJung-uk Kim UINT16 ResSourceOffset; 5423f0275a0SJung-uk Kim UINT16 VendorOffset; 5433f0275a0SJung-uk Kim UINT16 VendorLength; 5443f0275a0SJung-uk Kim /* 5453f0275a0SJung-uk Kim * Optional fields follow immediately: 5463f0275a0SJung-uk Kim * 1) PIN list (Words) 5473f0275a0SJung-uk Kim * 2) Resource Source String 5483f0275a0SJung-uk Kim * 3) Vendor Data bytes 5493f0275a0SJung-uk Kim */ 5503f0275a0SJung-uk Kim 5513f0275a0SJung-uk Kim } AML_RESOURCE_GPIO; 5523f0275a0SJung-uk Kim 5533f0275a0SJung-uk Kim #define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */ 5543f0275a0SJung-uk Kim 5553f0275a0SJung-uk Kim /* Values for ConnectionType above */ 5563f0275a0SJung-uk Kim 5573f0275a0SJung-uk Kim #define AML_RESOURCE_GPIO_TYPE_INT 0 5583f0275a0SJung-uk Kim #define AML_RESOURCE_GPIO_TYPE_IO 1 5593f0275a0SJung-uk Kim #define AML_RESOURCE_MAX_GPIOTYPE 1 5603f0275a0SJung-uk Kim 5613f0275a0SJung-uk Kim 5623f0275a0SJung-uk Kim /* Common preamble for all serial descriptors (ACPI 5.0) */ 5633f0275a0SJung-uk Kim 5643f0275a0SJung-uk Kim #define AML_RESOURCE_SERIAL_COMMON \ 5653f0275a0SJung-uk Kim UINT8 RevisionId; \ 5663f0275a0SJung-uk Kim UINT8 ResSourceIndex; \ 5673f0275a0SJung-uk Kim UINT8 Type; \ 5683f0275a0SJung-uk Kim UINT8 Flags; \ 5693f0275a0SJung-uk Kim UINT16 TypeSpecificFlags; \ 5703f0275a0SJung-uk Kim UINT8 TypeRevisionId; \ 5713f0275a0SJung-uk Kim UINT16 TypeDataLength; \ 5723f0275a0SJung-uk Kim 5733f0275a0SJung-uk Kim /* Values for the type field above */ 5743f0275a0SJung-uk Kim 5753f0275a0SJung-uk Kim #define AML_RESOURCE_I2C_SERIALBUSTYPE 1 5763f0275a0SJung-uk Kim #define AML_RESOURCE_SPI_SERIALBUSTYPE 2 5773f0275a0SJung-uk Kim #define AML_RESOURCE_UART_SERIALBUSTYPE 3 578cfd1ed46SJung-uk Kim #define AML_RESOURCE_CSI2_SERIALBUSTYPE 4 579cfd1ed46SJung-uk Kim #define AML_RESOURCE_MAX_SERIALBUSTYPE 4 5803f0275a0SJung-uk Kim #define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */ 5813f0275a0SJung-uk Kim 5823f0275a0SJung-uk Kim typedef struct aml_resource_common_serialbus 5833f0275a0SJung-uk Kim { 5843f0275a0SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 5853f0275a0SJung-uk Kim AML_RESOURCE_SERIAL_COMMON 5863f0275a0SJung-uk Kim 5873f0275a0SJung-uk Kim } AML_RESOURCE_COMMON_SERIALBUS; 5883f0275a0SJung-uk Kim 589cfd1ed46SJung-uk Kim 590cfd1ed46SJung-uk Kim typedef struct aml_resource_csi2_serialbus 591cfd1ed46SJung-uk Kim { 592cfd1ed46SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 593cfd1ed46SJung-uk Kim AML_RESOURCE_SERIAL_COMMON 594cfd1ed46SJung-uk Kim 595cfd1ed46SJung-uk Kim /* 596cfd1ed46SJung-uk Kim * Optional fields follow immediately: 597cfd1ed46SJung-uk Kim * 1) Vendor Data bytes 598cfd1ed46SJung-uk Kim * 2) Resource Source String 599cfd1ed46SJung-uk Kim */ 600cfd1ed46SJung-uk Kim 601cfd1ed46SJung-uk Kim } AML_RESOURCE_CSI2_SERIALBUS; 602cfd1ed46SJung-uk Kim 603cfd1ed46SJung-uk Kim #define AML_RESOURCE_CSI2_REVISION 1 /* ACPI 6.4 */ 604cfd1ed46SJung-uk Kim #define AML_RESOURCE_CSI2_TYPE_REVISION 1 /* ACPI 6.4 */ 605cfd1ed46SJung-uk Kim #define AML_RESOURCE_CSI2_MIN_DATA_LEN 0 /* ACPI 6.4 */ 606cfd1ed46SJung-uk Kim 6073f0275a0SJung-uk Kim typedef struct aml_resource_i2c_serialbus 6083f0275a0SJung-uk Kim { 6093f0275a0SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 6103f0275a0SJung-uk Kim AML_RESOURCE_SERIAL_COMMON 6113f0275a0SJung-uk Kim UINT32 ConnectionSpeed; 6123f0275a0SJung-uk Kim UINT16 SlaveAddress; 6133f0275a0SJung-uk Kim /* 6143f0275a0SJung-uk Kim * Optional fields follow immediately: 6153f0275a0SJung-uk Kim * 1) Vendor Data bytes 6163f0275a0SJung-uk Kim * 2) Resource Source String 6173f0275a0SJung-uk Kim */ 6183f0275a0SJung-uk Kim 6193f0275a0SJung-uk Kim } AML_RESOURCE_I2C_SERIALBUS; 6203f0275a0SJung-uk Kim 6213f0275a0SJung-uk Kim #define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */ 6223f0275a0SJung-uk Kim #define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */ 6233f0275a0SJung-uk Kim #define AML_RESOURCE_I2C_MIN_DATA_LEN 6 6243f0275a0SJung-uk Kim 6253f0275a0SJung-uk Kim typedef struct aml_resource_spi_serialbus 6263f0275a0SJung-uk Kim { 6273f0275a0SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 6283f0275a0SJung-uk Kim AML_RESOURCE_SERIAL_COMMON 6293f0275a0SJung-uk Kim UINT32 ConnectionSpeed; 6303f0275a0SJung-uk Kim UINT8 DataBitLength; 6313f0275a0SJung-uk Kim UINT8 ClockPhase; 6323f0275a0SJung-uk Kim UINT8 ClockPolarity; 6333f0275a0SJung-uk Kim UINT16 DeviceSelection; 6343f0275a0SJung-uk Kim /* 6353f0275a0SJung-uk Kim * Optional fields follow immediately: 6363f0275a0SJung-uk Kim * 1) Vendor Data bytes 6373f0275a0SJung-uk Kim * 2) Resource Source String 6383f0275a0SJung-uk Kim */ 6393f0275a0SJung-uk Kim 6403f0275a0SJung-uk Kim } AML_RESOURCE_SPI_SERIALBUS; 6413f0275a0SJung-uk Kim 6423f0275a0SJung-uk Kim #define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */ 6433f0275a0SJung-uk Kim #define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */ 6443f0275a0SJung-uk Kim #define AML_RESOURCE_SPI_MIN_DATA_LEN 9 6453f0275a0SJung-uk Kim 6463f0275a0SJung-uk Kim typedef struct aml_resource_uart_serialbus 6473f0275a0SJung-uk Kim { 6483f0275a0SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 6493f0275a0SJung-uk Kim AML_RESOURCE_SERIAL_COMMON 6503f0275a0SJung-uk Kim UINT32 DefaultBaudRate; 6513f0275a0SJung-uk Kim UINT16 RxFifoSize; 6523f0275a0SJung-uk Kim UINT16 TxFifoSize; 6533f0275a0SJung-uk Kim UINT8 Parity; 6543f0275a0SJung-uk Kim UINT8 LinesEnabled; 6553f0275a0SJung-uk Kim /* 6563f0275a0SJung-uk Kim * Optional fields follow immediately: 6573f0275a0SJung-uk Kim * 1) Vendor Data bytes 6583f0275a0SJung-uk Kim * 2) Resource Source String 6593f0275a0SJung-uk Kim */ 6603f0275a0SJung-uk Kim 6613f0275a0SJung-uk Kim } AML_RESOURCE_UART_SERIALBUS; 6623f0275a0SJung-uk Kim 6633f0275a0SJung-uk Kim #define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */ 6643f0275a0SJung-uk Kim #define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */ 6653f0275a0SJung-uk Kim #define AML_RESOURCE_UART_MIN_DATA_LEN 10 6663f0275a0SJung-uk Kim 667af051161SJung-uk Kim typedef struct aml_resource_pin_function 668af051161SJung-uk Kim { 669af051161SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 670af051161SJung-uk Kim UINT8 RevisionId; 671af051161SJung-uk Kim UINT16 Flags; 672af051161SJung-uk Kim UINT8 PinConfig; 673af051161SJung-uk Kim UINT16 FunctionNumber; 674af051161SJung-uk Kim UINT16 PinTableOffset; 675af051161SJung-uk Kim UINT8 ResSourceIndex; 676af051161SJung-uk Kim UINT16 ResSourceOffset; 677af051161SJung-uk Kim UINT16 VendorOffset; 678af051161SJung-uk Kim UINT16 VendorLength; 679af051161SJung-uk Kim /* 680af051161SJung-uk Kim * Optional fields follow immediately: 681af051161SJung-uk Kim * 1) PIN list (Words) 682af051161SJung-uk Kim * 2) Resource Source String 683af051161SJung-uk Kim * 3) Vendor Data bytes 684af051161SJung-uk Kim */ 685af051161SJung-uk Kim 686af051161SJung-uk Kim } AML_RESOURCE_PIN_FUNCTION; 687af051161SJung-uk Kim 688af051161SJung-uk Kim #define AML_RESOURCE_PIN_FUNCTION_REVISION 1 /* ACPI 6.2 */ 689af051161SJung-uk Kim 690af051161SJung-uk Kim typedef struct aml_resource_pin_config 691af051161SJung-uk Kim { 692af051161SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 693af051161SJung-uk Kim UINT8 RevisionId; 694af051161SJung-uk Kim UINT16 Flags; 695af051161SJung-uk Kim UINT8 PinConfigType; 696af051161SJung-uk Kim UINT32 PinConfigValue; 697af051161SJung-uk Kim UINT16 PinTableOffset; 698af051161SJung-uk Kim UINT8 ResSourceIndex; 699af051161SJung-uk Kim UINT16 ResSourceOffset; 700af051161SJung-uk Kim UINT16 VendorOffset; 701af051161SJung-uk Kim UINT16 VendorLength; 702af051161SJung-uk Kim /* 703af051161SJung-uk Kim * Optional fields follow immediately: 704af051161SJung-uk Kim * 1) PIN list (Words) 705af051161SJung-uk Kim * 2) Resource Source String 706af051161SJung-uk Kim * 3) Vendor Data bytes 707af051161SJung-uk Kim */ 708af051161SJung-uk Kim 709af051161SJung-uk Kim } AML_RESOURCE_PIN_CONFIG; 710af051161SJung-uk Kim 711722b1667SJung-uk Kim #define AML_RESOURCE_CLOCK_INPUT_REVISION 1 /* ACPI 6.5 */ 712722b1667SJung-uk Kim 713722b1667SJung-uk Kim typedef struct aml_resource_clock_input 714722b1667SJung-uk Kim { 715722b1667SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 716722b1667SJung-uk Kim UINT8 RevisionId; 717722b1667SJung-uk Kim UINT16 Flags; 718722b1667SJung-uk Kim UINT16 FrequencyDivisor; 719722b1667SJung-uk Kim UINT32 FrequencyNumerator; 720722b1667SJung-uk Kim /* 721722b1667SJung-uk Kim * Optional fields follow immediately: 722722b1667SJung-uk Kim * 1) Resource Source index 723722b1667SJung-uk Kim * 2) Resource Source String 724722b1667SJung-uk Kim */ 725722b1667SJung-uk Kim } AML_RESOURCE_CLOCK_INPUT; 726722b1667SJung-uk Kim 727722b1667SJung-uk Kim 728af051161SJung-uk Kim #define AML_RESOURCE_PIN_CONFIG_REVISION 1 /* ACPI 6.2 */ 729af051161SJung-uk Kim 730af051161SJung-uk Kim typedef struct aml_resource_pin_group 731af051161SJung-uk Kim { 732af051161SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 733af051161SJung-uk Kim UINT8 RevisionId; 734af051161SJung-uk Kim UINT16 Flags; 735af051161SJung-uk Kim UINT16 PinTableOffset; 736af051161SJung-uk Kim UINT16 LabelOffset; 737af051161SJung-uk Kim UINT16 VendorOffset; 738af051161SJung-uk Kim UINT16 VendorLength; 739af051161SJung-uk Kim /* 740af051161SJung-uk Kim * Optional fields follow immediately: 741af051161SJung-uk Kim * 1) PIN list (Words) 742af051161SJung-uk Kim * 2) Resource Label String 743af051161SJung-uk Kim * 3) Vendor Data bytes 744af051161SJung-uk Kim */ 745af051161SJung-uk Kim 746af051161SJung-uk Kim } AML_RESOURCE_PIN_GROUP; 747af051161SJung-uk Kim 748af051161SJung-uk Kim #define AML_RESOURCE_PIN_GROUP_REVISION 1 /* ACPI 6.2 */ 749af051161SJung-uk Kim 750af051161SJung-uk Kim typedef struct aml_resource_pin_group_function 751af051161SJung-uk Kim { 752af051161SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 753af051161SJung-uk Kim UINT8 RevisionId; 754af051161SJung-uk Kim UINT16 Flags; 755af051161SJung-uk Kim UINT16 FunctionNumber; 756af051161SJung-uk Kim UINT8 ResSourceIndex; 757af051161SJung-uk Kim UINT16 ResSourceOffset; 758af051161SJung-uk Kim UINT16 ResSourceLabelOffset; 759af051161SJung-uk Kim UINT16 VendorOffset; 760af051161SJung-uk Kim UINT16 VendorLength; 761af051161SJung-uk Kim /* 762af051161SJung-uk Kim * Optional fields follow immediately: 763af051161SJung-uk Kim * 1) Resource Source String 764af051161SJung-uk Kim * 2) Resource Source Label String 765af051161SJung-uk Kim * 3) Vendor Data bytes 766af051161SJung-uk Kim */ 767af051161SJung-uk Kim 768af051161SJung-uk Kim } AML_RESOURCE_PIN_GROUP_FUNCTION; 769af051161SJung-uk Kim 770af051161SJung-uk Kim #define AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION 1 /* ACPI 6.2 */ 771af051161SJung-uk Kim 772af051161SJung-uk Kim typedef struct aml_resource_pin_group_config 773af051161SJung-uk Kim { 774af051161SJung-uk Kim AML_RESOURCE_LARGE_HEADER_COMMON 775af051161SJung-uk Kim UINT8 RevisionId; 776af051161SJung-uk Kim UINT16 Flags; 777af051161SJung-uk Kim UINT8 PinConfigType; 778af051161SJung-uk Kim UINT32 PinConfigValue; 779af051161SJung-uk Kim UINT8 ResSourceIndex; 780af051161SJung-uk Kim UINT16 ResSourceOffset; 781af051161SJung-uk Kim UINT16 ResSourceLabelOffset; 782af051161SJung-uk Kim UINT16 VendorOffset; 783af051161SJung-uk Kim UINT16 VendorLength; 784af051161SJung-uk Kim /* 785af051161SJung-uk Kim * Optional fields follow immediately: 786af051161SJung-uk Kim * 1) Resource Source String 787af051161SJung-uk Kim * 2) Resource Source Label String 788af051161SJung-uk Kim * 3) Vendor Data bytes 789af051161SJung-uk Kim */ 790af051161SJung-uk Kim 791af051161SJung-uk Kim } AML_RESOURCE_PIN_GROUP_CONFIG; 792af051161SJung-uk Kim 793af051161SJung-uk Kim #define AML_RESOURCE_PIN_GROUP_CONFIG_REVISION 1 /* ACPI 6.2 */ 7943f0275a0SJung-uk Kim 795a9f12690SJung-uk Kim /* Union of all resource descriptors, so we can allocate the worst case */ 796a9f12690SJung-uk Kim 797a9f12690SJung-uk Kim typedef union aml_resource 798a9f12690SJung-uk Kim { 799a9f12690SJung-uk Kim /* Descriptor headers */ 800a9f12690SJung-uk Kim 801a9f12690SJung-uk Kim UINT8 DescriptorType; 802a9f12690SJung-uk Kim AML_RESOURCE_SMALL_HEADER SmallHeader; 803a9f12690SJung-uk Kim AML_RESOURCE_LARGE_HEADER LargeHeader; 804a9f12690SJung-uk Kim 805a9f12690SJung-uk Kim /* Small resource descriptors */ 806a9f12690SJung-uk Kim 807a9f12690SJung-uk Kim AML_RESOURCE_IRQ Irq; 808a9f12690SJung-uk Kim AML_RESOURCE_DMA Dma; 809a9f12690SJung-uk Kim AML_RESOURCE_START_DEPENDENT StartDpf; 810a9f12690SJung-uk Kim AML_RESOURCE_END_DEPENDENT EndDpf; 811a9f12690SJung-uk Kim AML_RESOURCE_IO Io; 812a9f12690SJung-uk Kim AML_RESOURCE_FIXED_IO FixedIo; 8133f0275a0SJung-uk Kim AML_RESOURCE_FIXED_DMA FixedDma; 814a9f12690SJung-uk Kim AML_RESOURCE_VENDOR_SMALL VendorSmall; 815a9f12690SJung-uk Kim AML_RESOURCE_END_TAG EndTag; 816a9f12690SJung-uk Kim 817a9f12690SJung-uk Kim /* Large resource descriptors */ 818a9f12690SJung-uk Kim 819a9f12690SJung-uk Kim AML_RESOURCE_MEMORY24 Memory24; 820a9f12690SJung-uk Kim AML_RESOURCE_GENERIC_REGISTER GenericReg; 821a9f12690SJung-uk Kim AML_RESOURCE_VENDOR_LARGE VendorLarge; 822a9f12690SJung-uk Kim AML_RESOURCE_MEMORY32 Memory32; 823a9f12690SJung-uk Kim AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; 824a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS16 Address16; 825a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS32 Address32; 826a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS64 Address64; 827a9f12690SJung-uk Kim AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 828a9f12690SJung-uk Kim AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; 8293f0275a0SJung-uk Kim AML_RESOURCE_GPIO Gpio; 8303f0275a0SJung-uk Kim AML_RESOURCE_I2C_SERIALBUS I2cSerialBus; 8313f0275a0SJung-uk Kim AML_RESOURCE_SPI_SERIALBUS SpiSerialBus; 8323f0275a0SJung-uk Kim AML_RESOURCE_UART_SERIALBUS UartSerialBus; 833cfd1ed46SJung-uk Kim AML_RESOURCE_CSI2_SERIALBUS Csi2SerialBus; 8343f0275a0SJung-uk Kim AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus; 835af051161SJung-uk Kim AML_RESOURCE_PIN_FUNCTION PinFunction; 836af051161SJung-uk Kim AML_RESOURCE_PIN_CONFIG PinConfig; 837af051161SJung-uk Kim AML_RESOURCE_PIN_GROUP PinGroup; 838af051161SJung-uk Kim AML_RESOURCE_PIN_GROUP_FUNCTION PinGroupFunction; 839af051161SJung-uk Kim AML_RESOURCE_PIN_GROUP_CONFIG PinGroupConfig; 840722b1667SJung-uk Kim AML_RESOURCE_CLOCK_INPUT ClockInput; 841a9f12690SJung-uk Kim 842a9f12690SJung-uk Kim /* Utility overlays */ 843a9f12690SJung-uk Kim 844a9f12690SJung-uk Kim AML_RESOURCE_ADDRESS Address; 845a9f12690SJung-uk Kim UINT32 DwordItem; 846a9f12690SJung-uk Kim UINT16 WordItem; 847a9f12690SJung-uk Kim UINT8 ByteItem; 848a9f12690SJung-uk Kim 849a9f12690SJung-uk Kim } AML_RESOURCE; 850a9f12690SJung-uk Kim 851*58308fadSJung-uk Kim /* restore default alignment */ 852*58308fadSJung-uk Kim 853*58308fadSJung-uk Kim #pragma pack() 854313a0c13SJung-uk Kim 855313a0c13SJung-uk Kim /* Interfaces used by both the disassembler and compiler */ 856313a0c13SJung-uk Kim 857313a0c13SJung-uk Kim void 858313a0c13SJung-uk Kim MpSaveGpioInfo ( 859313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *Op, 860313a0c13SJung-uk Kim AML_RESOURCE *Resource, 861313a0c13SJung-uk Kim UINT32 PinCount, 862313a0c13SJung-uk Kim UINT16 *PinList, 863313a0c13SJung-uk Kim char *DeviceName); 864313a0c13SJung-uk Kim 865313a0c13SJung-uk Kim void 866313a0c13SJung-uk Kim MpSaveSerialInfo ( 867313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *Op, 868313a0c13SJung-uk Kim AML_RESOURCE *Resource, 869313a0c13SJung-uk Kim char *DeviceName); 870313a0c13SJung-uk Kim 871313a0c13SJung-uk Kim char * 872313a0c13SJung-uk Kim MpGetHidFromParseTree ( 873313a0c13SJung-uk Kim ACPI_NAMESPACE_NODE *HidNode); 874313a0c13SJung-uk Kim 875313a0c13SJung-uk Kim char * 876313a0c13SJung-uk Kim MpGetHidViaNamestring ( 877313a0c13SJung-uk Kim char *DeviceName); 878313a0c13SJung-uk Kim 879313a0c13SJung-uk Kim char * 880313a0c13SJung-uk Kim MpGetConnectionInfo ( 881313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *Op, 882313a0c13SJung-uk Kim UINT32 PinIndex, 883313a0c13SJung-uk Kim ACPI_NAMESPACE_NODE **TargetNode, 884313a0c13SJung-uk Kim char **TargetName); 885313a0c13SJung-uk Kim 886313a0c13SJung-uk Kim char * 887313a0c13SJung-uk Kim MpGetParentDeviceHid ( 888313a0c13SJung-uk Kim ACPI_PARSE_OBJECT *Op, 889313a0c13SJung-uk Kim ACPI_NAMESPACE_NODE **TargetNode, 890313a0c13SJung-uk Kim char **ParentDeviceName); 891313a0c13SJung-uk Kim 892313a0c13SJung-uk Kim char * 893313a0c13SJung-uk Kim MpGetDdnValue ( 894313a0c13SJung-uk Kim char *DeviceName); 895313a0c13SJung-uk Kim 896313a0c13SJung-uk Kim char * 897313a0c13SJung-uk Kim MpGetHidValue ( 898313a0c13SJung-uk Kim ACPI_NAMESPACE_NODE *DeviceNode); 899313a0c13SJung-uk Kim 900a9f12690SJung-uk Kim #endif 901