1bc36eafdSMike Gerdts /******************************************************************************* 2bc36eafdSMike Gerdts * 3bc36eafdSMike Gerdts * Module Name: rsirq - IRQ resource descriptors 4bc36eafdSMike Gerdts * 5bc36eafdSMike Gerdts ******************************************************************************/ 6bc36eafdSMike Gerdts 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. 12bc36eafdSMike Gerdts * All rights reserved. 13bc36eafdSMike Gerdts * 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 * 119bc36eafdSMike Gerdts * Redistribution and use in source and binary forms, with or without 120bc36eafdSMike Gerdts * modification, are permitted provided that the following conditions 121bc36eafdSMike Gerdts * are met: 122bc36eafdSMike Gerdts * 1. Redistributions of source code must retain the above copyright 123bc36eafdSMike Gerdts * notice, this list of conditions, and the following disclaimer, 124bc36eafdSMike Gerdts * without modification. 125bc36eafdSMike Gerdts * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126bc36eafdSMike Gerdts * substantially similar to the "NO WARRANTY" disclaimer below 127bc36eafdSMike Gerdts * ("Disclaimer") and any redistribution must be conditioned upon 128bc36eafdSMike Gerdts * including a substantially similar Disclaimer requirement for further 129bc36eafdSMike Gerdts * binary redistribution. 130bc36eafdSMike Gerdts * 3. Neither the names of the above-listed copyright holders nor the names 131bc36eafdSMike Gerdts * of any contributors may be used to endorse or promote products derived 132bc36eafdSMike Gerdts * from this software without specific prior written permission. 133bc36eafdSMike Gerdts * 134*35786f68SRobert Mustacchi * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135*35786f68SRobert Mustacchi * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136*35786f68SRobert Mustacchi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137*35786f68SRobert Mustacchi * 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 147bc36eafdSMike Gerdts * GNU General Public License ("GPL") version 2 as published by the Free 148bc36eafdSMike Gerdts * Software Foundation. 149bc36eafdSMike Gerdts * 150*35786f68SRobert Mustacchi *****************************************************************************/ 151bc36eafdSMike Gerdts 152bc36eafdSMike Gerdts #include "acpi.h" 153bc36eafdSMike Gerdts #include "accommon.h" 154bc36eafdSMike Gerdts #include "acresrc.h" 155bc36eafdSMike Gerdts 156bc36eafdSMike Gerdts #define _COMPONENT ACPI_RESOURCES 157bc36eafdSMike Gerdts ACPI_MODULE_NAME ("rsirq") 158bc36eafdSMike Gerdts 159bc36eafdSMike Gerdts 160bc36eafdSMike Gerdts /******************************************************************************* 161bc36eafdSMike Gerdts * 162bc36eafdSMike Gerdts * AcpiRsGetIrq 163bc36eafdSMike Gerdts * 164bc36eafdSMike Gerdts ******************************************************************************/ 165bc36eafdSMike Gerdts 166bc36eafdSMike Gerdts ACPI_RSCONVERT_INFO AcpiRsGetIrq[9] = 167bc36eafdSMike Gerdts { 168bc36eafdSMike Gerdts {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IRQ, 169bc36eafdSMike Gerdts ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), 170bc36eafdSMike Gerdts ACPI_RSC_TABLE_SIZE (AcpiRsGetIrq)}, 171bc36eafdSMike Gerdts 172bc36eafdSMike Gerdts /* Get the IRQ mask (bytes 1:2) */ 173bc36eafdSMike Gerdts 174bc36eafdSMike Gerdts {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), 175bc36eafdSMike Gerdts AML_OFFSET (Irq.IrqMask), 176bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, 177bc36eafdSMike Gerdts 178bc36eafdSMike Gerdts /* Set default flags (others are zero) */ 179bc36eafdSMike Gerdts 180bc36eafdSMike Gerdts {ACPI_RSC_SET8, ACPI_RS_OFFSET (Data.Irq.Triggering), 181bc36eafdSMike Gerdts ACPI_EDGE_SENSITIVE, 182bc36eafdSMike Gerdts 1}, 183bc36eafdSMike Gerdts 184bc36eafdSMike Gerdts /* Get the descriptor length (2 or 3 for IRQ descriptor) */ 185bc36eafdSMike Gerdts 186bc36eafdSMike Gerdts {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Irq.DescriptorLength), 187bc36eafdSMike Gerdts AML_OFFSET (Irq.DescriptorType), 188bc36eafdSMike Gerdts 0}, 189bc36eafdSMike Gerdts 190bc36eafdSMike Gerdts /* All done if no flag byte present in descriptor */ 191bc36eafdSMike Gerdts 192bc36eafdSMike Gerdts {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 3}, 193bc36eafdSMike Gerdts 194bc36eafdSMike Gerdts /* Get flags: Triggering[0], Polarity[3], Sharing[4], Wake[5] */ 195bc36eafdSMike Gerdts 196bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), 197bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 198bc36eafdSMike Gerdts 0}, 199bc36eafdSMike Gerdts 200bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), 201bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 202bc36eafdSMike Gerdts 3}, 203bc36eafdSMike Gerdts 204bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), 205bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 206bc36eafdSMike Gerdts 4}, 207bc36eafdSMike Gerdts 208bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.WakeCapable), 209bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 210bc36eafdSMike Gerdts 5} 211bc36eafdSMike Gerdts }; 212bc36eafdSMike Gerdts 213bc36eafdSMike Gerdts 214bc36eafdSMike Gerdts /******************************************************************************* 215bc36eafdSMike Gerdts * 216bc36eafdSMike Gerdts * AcpiRsSetIrq 217bc36eafdSMike Gerdts * 218bc36eafdSMike Gerdts ******************************************************************************/ 219bc36eafdSMike Gerdts 220bc36eafdSMike Gerdts ACPI_RSCONVERT_INFO AcpiRsSetIrq[14] = 221bc36eafdSMike Gerdts { 222bc36eafdSMike Gerdts /* Start with a default descriptor of length 3 */ 223bc36eafdSMike Gerdts 224bc36eafdSMike Gerdts {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IRQ, 225bc36eafdSMike Gerdts sizeof (AML_RESOURCE_IRQ), 226bc36eafdSMike Gerdts ACPI_RSC_TABLE_SIZE (AcpiRsSetIrq)}, 227bc36eafdSMike Gerdts 228bc36eafdSMike Gerdts /* Convert interrupt list to 16-bit IRQ bitmask */ 229bc36eafdSMike Gerdts 230bc36eafdSMike Gerdts {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), 231bc36eafdSMike Gerdts AML_OFFSET (Irq.IrqMask), 232bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, 233bc36eafdSMike Gerdts 234bc36eafdSMike Gerdts /* Set flags: Triggering[0], Polarity[3], Sharing[4], Wake[5] */ 235bc36eafdSMike Gerdts 236bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), 237bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 238bc36eafdSMike Gerdts 0}, 239bc36eafdSMike Gerdts 240bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), 241bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 242bc36eafdSMike Gerdts 3}, 243bc36eafdSMike Gerdts 244bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), 245bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 246bc36eafdSMike Gerdts 4}, 247bc36eafdSMike Gerdts 248bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.WakeCapable), 249bc36eafdSMike Gerdts AML_OFFSET (Irq.Flags), 250bc36eafdSMike Gerdts 5}, 251bc36eafdSMike Gerdts 252bc36eafdSMike Gerdts /* 253bc36eafdSMike Gerdts * All done if the output descriptor length is required to be 3 254bc36eafdSMike Gerdts * (i.e., optimization to 2 bytes cannot be attempted) 255bc36eafdSMike Gerdts */ 256bc36eafdSMike Gerdts {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, 257bc36eafdSMike Gerdts ACPI_RS_OFFSET(Data.Irq.DescriptorLength), 258bc36eafdSMike Gerdts 3}, 259bc36eafdSMike Gerdts 260bc36eafdSMike Gerdts /* Set length to 2 bytes (no flags byte) */ 261bc36eafdSMike Gerdts 262bc36eafdSMike Gerdts {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ_NOFLAGS)}, 263bc36eafdSMike Gerdts 264bc36eafdSMike Gerdts /* 265bc36eafdSMike Gerdts * All done if the output descriptor length is required to be 2. 266bc36eafdSMike Gerdts * 267bc36eafdSMike Gerdts * TBD: Perhaps we should check for error if input flags are not 268bc36eafdSMike Gerdts * compatible with a 2-byte descriptor. 269bc36eafdSMike Gerdts */ 270bc36eafdSMike Gerdts {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, 271bc36eafdSMike Gerdts ACPI_RS_OFFSET(Data.Irq.DescriptorLength), 272bc36eafdSMike Gerdts 2}, 273bc36eafdSMike Gerdts 274bc36eafdSMike Gerdts /* Reset length to 3 bytes (descriptor with flags byte) */ 275bc36eafdSMike Gerdts 276bc36eafdSMike Gerdts {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ)}, 277bc36eafdSMike Gerdts 278bc36eafdSMike Gerdts /* 279bc36eafdSMike Gerdts * Check if the flags byte is necessary. Not needed if the flags are: 280bc36eafdSMike Gerdts * ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_HIGH, ACPI_EXCLUSIVE 281bc36eafdSMike Gerdts */ 282bc36eafdSMike Gerdts {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, 283bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Irq.Triggering), 284bc36eafdSMike Gerdts ACPI_EDGE_SENSITIVE}, 285bc36eafdSMike Gerdts 286bc36eafdSMike Gerdts {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, 287bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Irq.Polarity), 288bc36eafdSMike Gerdts ACPI_ACTIVE_HIGH}, 289bc36eafdSMike Gerdts 290bc36eafdSMike Gerdts {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, 291bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Irq.Sharable), 292bc36eafdSMike Gerdts ACPI_EXCLUSIVE}, 293bc36eafdSMike Gerdts 294bc36eafdSMike Gerdts /* We can optimize to a 2-byte IrqNoFlags() descriptor */ 295bc36eafdSMike Gerdts 296bc36eafdSMike Gerdts {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ_NOFLAGS)} 297bc36eafdSMike Gerdts }; 298bc36eafdSMike Gerdts 299bc36eafdSMike Gerdts 300bc36eafdSMike Gerdts /******************************************************************************* 301bc36eafdSMike Gerdts * 302bc36eafdSMike Gerdts * AcpiRsConvertExtIrq 303bc36eafdSMike Gerdts * 304bc36eafdSMike Gerdts ******************************************************************************/ 305bc36eafdSMike Gerdts 306bc36eafdSMike Gerdts ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[10] = 307bc36eafdSMike Gerdts { 308bc36eafdSMike Gerdts {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_IRQ, 309bc36eafdSMike Gerdts ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), 310bc36eafdSMike Gerdts ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtIrq)}, 311bc36eafdSMike Gerdts 312bc36eafdSMike Gerdts {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_IRQ, 313bc36eafdSMike Gerdts sizeof (AML_RESOURCE_EXTENDED_IRQ), 314bc36eafdSMike Gerdts 0}, 315bc36eafdSMike Gerdts 316bc36eafdSMike Gerdts /* 317bc36eafdSMike Gerdts * Flags: Producer/Consumer[0], Triggering[1], Polarity[2], 318bc36eafdSMike Gerdts * Sharing[3], Wake[4] 319bc36eafdSMike Gerdts */ 320bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.ProducerConsumer), 321bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Flags), 322bc36eafdSMike Gerdts 0}, 323bc36eafdSMike Gerdts 324bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Triggering), 325bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Flags), 326bc36eafdSMike Gerdts 1}, 327bc36eafdSMike Gerdts 328bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Polarity), 329bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Flags), 330bc36eafdSMike Gerdts 2}, 331bc36eafdSMike Gerdts 332bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable), 333bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Flags), 334bc36eafdSMike Gerdts 3}, 335bc36eafdSMike Gerdts 336bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.WakeCapable), 337bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Flags), 338bc36eafdSMike Gerdts 4}, 339bc36eafdSMike Gerdts 340bc36eafdSMike Gerdts /* IRQ Table length (Byte4) */ 341bc36eafdSMike Gerdts 342bc36eafdSMike Gerdts {ACPI_RSC_COUNT, ACPI_RS_OFFSET (Data.ExtendedIrq.InterruptCount), 343bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.InterruptCount), 344bc36eafdSMike Gerdts sizeof (UINT32)}, 345bc36eafdSMike Gerdts 346bc36eafdSMike Gerdts /* Copy every IRQ in the table, each is 32 bits */ 347bc36eafdSMike Gerdts 348bc36eafdSMike Gerdts {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), 349bc36eafdSMike Gerdts AML_OFFSET (ExtendedIrq.Interrupts[0]), 350bc36eafdSMike Gerdts 0}, 351bc36eafdSMike Gerdts 352bc36eafdSMike Gerdts /* Optional ResourceSource (Index and String) */ 353bc36eafdSMike Gerdts 354bc36eafdSMike Gerdts {ACPI_RSC_SOURCEX, ACPI_RS_OFFSET (Data.ExtendedIrq.ResourceSource), 355bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), 356bc36eafdSMike Gerdts sizeof (AML_RESOURCE_EXTENDED_IRQ)} 357bc36eafdSMike Gerdts }; 358bc36eafdSMike Gerdts 359bc36eafdSMike Gerdts 360bc36eafdSMike Gerdts /******************************************************************************* 361bc36eafdSMike Gerdts * 362bc36eafdSMike Gerdts * AcpiRsConvertDma 363bc36eafdSMike Gerdts * 364bc36eafdSMike Gerdts ******************************************************************************/ 365bc36eafdSMike Gerdts 366bc36eafdSMike Gerdts ACPI_RSCONVERT_INFO AcpiRsConvertDma[6] = 367bc36eafdSMike Gerdts { 368bc36eafdSMike Gerdts {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_DMA, 369bc36eafdSMike Gerdts ACPI_RS_SIZE (ACPI_RESOURCE_DMA), 370bc36eafdSMike Gerdts ACPI_RSC_TABLE_SIZE (AcpiRsConvertDma)}, 371bc36eafdSMike Gerdts 372bc36eafdSMike Gerdts {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_DMA, 373bc36eafdSMike Gerdts sizeof (AML_RESOURCE_DMA), 374bc36eafdSMike Gerdts 0}, 375bc36eafdSMike Gerdts 376bc36eafdSMike Gerdts /* Flags: transfer preference, bus mastering, channel speed */ 377bc36eafdSMike Gerdts 378bc36eafdSMike Gerdts {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Transfer), 379bc36eafdSMike Gerdts AML_OFFSET (Dma.Flags), 380bc36eafdSMike Gerdts 0}, 381bc36eafdSMike Gerdts 382bc36eafdSMike Gerdts {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Dma.BusMaster), 383bc36eafdSMike Gerdts AML_OFFSET (Dma.Flags), 384bc36eafdSMike Gerdts 2}, 385bc36eafdSMike Gerdts 386bc36eafdSMike Gerdts {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Type), 387bc36eafdSMike Gerdts AML_OFFSET (Dma.Flags), 388bc36eafdSMike Gerdts 5}, 389bc36eafdSMike Gerdts 390bc36eafdSMike Gerdts /* DMA channel mask bits */ 391bc36eafdSMike Gerdts 392bc36eafdSMike Gerdts {ACPI_RSC_BITMASK, ACPI_RS_OFFSET (Data.Dma.Channels[0]), 393bc36eafdSMike Gerdts AML_OFFSET (Dma.DmaChannelMask), 394bc36eafdSMike Gerdts ACPI_RS_OFFSET (Data.Dma.ChannelCount)} 395bc36eafdSMike Gerdts }; 396bc36eafdSMike Gerdts 397bc36eafdSMike Gerdts 398bc36eafdSMike Gerdts /******************************************************************************* 399bc36eafdSMike Gerdts * 400bc36eafdSMike Gerdts * AcpiRsConvertFixedDma 401bc36eafdSMike Gerdts * 402bc36eafdSMike Gerdts ******************************************************************************/ 403bc36eafdSMike Gerdts 404bc36eafdSMike Gerdts ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[4] = 405bc36eafdSMike Gerdts { 406bc36eafdSMike Gerdts {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_DMA, 407bc36eafdSMike Gerdts ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA), 408bc36eafdSMike Gerdts ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedDma)}, 409bc36eafdSMike Gerdts 410bc36eafdSMike Gerdts {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_DMA, 411bc36eafdSMike Gerdts sizeof (AML_RESOURCE_FIXED_DMA), 412bc36eafdSMike Gerdts 0}, 413bc36eafdSMike Gerdts 414bc36eafdSMike Gerdts /* 415bc36eafdSMike Gerdts * These fields are contiguous in both the source and destination: 416bc36eafdSMike Gerdts * RequestLines 417bc36eafdSMike Gerdts * Channels 418bc36eafdSMike Gerdts */ 419bc36eafdSMike Gerdts {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.FixedDma.RequestLines), 420bc36eafdSMike Gerdts AML_OFFSET (FixedDma.RequestLines), 421bc36eafdSMike Gerdts 2}, 422bc36eafdSMike Gerdts 423bc36eafdSMike Gerdts {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.FixedDma.Width), 424bc36eafdSMike Gerdts AML_OFFSET (FixedDma.Width), 425bc36eafdSMike Gerdts 1}, 426bc36eafdSMike Gerdts }; 427