Home | History | Annotate | Line # | Download | only in resources
rsserial.c revision 1.1.1.11
      1       1.1  christos /*******************************************************************************
      2       1.1  christos  *
      3       1.1  christos  * Module Name: rsserial - GPIO/SerialBus resource descriptors
      4       1.1  christos  *
      5       1.1  christos  ******************************************************************************/
      6       1.1  christos 
      7       1.1  christos /*
      8  1.1.1.11  christos  * Copyright (C) 2000 - 2021, Intel Corp.
      9       1.1  christos  * All rights reserved.
     10       1.1  christos  *
     11       1.1  christos  * Redistribution and use in source and binary forms, with or without
     12       1.1  christos  * modification, are permitted provided that the following conditions
     13       1.1  christos  * are met:
     14       1.1  christos  * 1. Redistributions of source code must retain the above copyright
     15       1.1  christos  *    notice, this list of conditions, and the following disclaimer,
     16       1.1  christos  *    without modification.
     17       1.1  christos  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18       1.1  christos  *    substantially similar to the "NO WARRANTY" disclaimer below
     19       1.1  christos  *    ("Disclaimer") and any redistribution must be conditioned upon
     20       1.1  christos  *    including a substantially similar Disclaimer requirement for further
     21       1.1  christos  *    binary redistribution.
     22       1.1  christos  * 3. Neither the names of the above-listed copyright holders nor the names
     23       1.1  christos  *    of any contributors may be used to endorse or promote products derived
     24       1.1  christos  *    from this software without specific prior written permission.
     25       1.1  christos  *
     26       1.1  christos  * Alternatively, this software may be distributed under the terms of the
     27       1.1  christos  * GNU General Public License ("GPL") version 2 as published by the Free
     28       1.1  christos  * Software Foundation.
     29       1.1  christos  *
     30       1.1  christos  * NO WARRANTY
     31       1.1  christos  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32       1.1  christos  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  1.1.1.11  christos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     34       1.1  christos  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35       1.1  christos  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36       1.1  christos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37       1.1  christos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38       1.1  christos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39       1.1  christos  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40       1.1  christos  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41       1.1  christos  * POSSIBILITY OF SUCH DAMAGES.
     42       1.1  christos  */
     43       1.1  christos 
     44       1.1  christos #include "acpi.h"
     45       1.1  christos #include "accommon.h"
     46       1.1  christos #include "acresrc.h"
     47       1.1  christos 
     48       1.1  christos #define _COMPONENT          ACPI_RESOURCES
     49       1.1  christos         ACPI_MODULE_NAME    ("rsserial")
     50       1.1  christos 
     51       1.1  christos 
     52       1.1  christos /*******************************************************************************
     53       1.1  christos  *
     54       1.1  christos  * AcpiRsConvertGpio
     55       1.1  christos  *
     56       1.1  christos  ******************************************************************************/
     57       1.1  christos 
     58       1.1  christos ACPI_RSCONVERT_INFO     AcpiRsConvertGpio[18] =
     59       1.1  christos {
     60       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_GPIO,
     61       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_GPIO),
     62       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertGpio)},
     63       1.1  christos 
     64       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_GPIO,
     65       1.1  christos                         sizeof (AML_RESOURCE_GPIO),
     66       1.1  christos                         0},
     67       1.1  christos 
     68       1.1  christos     /*
     69       1.1  christos      * These fields are contiguous in both the source and destination:
     70       1.1  christos      * RevisionId
     71       1.1  christos      * ConnectionType
     72       1.1  christos      */
     73       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Gpio.RevisionId),
     74       1.1  christos                         AML_OFFSET (Gpio.RevisionId),
     75       1.1  christos                         2},
     76       1.1  christos 
     77       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.ProducerConsumer),
     78       1.1  christos                         AML_OFFSET (Gpio.Flags),
     79       1.1  christos                         0},
     80       1.1  christos 
     81   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Shareable),
     82       1.1  christos                         AML_OFFSET (Gpio.IntFlags),
     83       1.1  christos                         3},
     84       1.1  christos 
     85       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.WakeCapable),
     86       1.1  christos                         AML_OFFSET (Gpio.IntFlags),
     87       1.1  christos                         4},
     88       1.1  christos 
     89       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.IoRestriction),
     90       1.1  christos                         AML_OFFSET (Gpio.IntFlags),
     91       1.1  christos                         0},
     92       1.1  christos 
     93       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Triggering),
     94       1.1  christos                         AML_OFFSET (Gpio.IntFlags),
     95       1.1  christos                         0},
     96       1.1  christos 
     97       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Polarity),
     98       1.1  christos                         AML_OFFSET (Gpio.IntFlags),
     99       1.1  christos                         1},
    100       1.1  christos 
    101       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Gpio.PinConfig),
    102       1.1  christos                         AML_OFFSET (Gpio.PinConfig),
    103       1.1  christos                         1},
    104       1.1  christos 
    105       1.1  christos     /*
    106       1.1  christos      * These fields are contiguous in both the source and destination:
    107       1.1  christos      * DriveStrength
    108       1.1  christos      * DebounceTimeout
    109       1.1  christos      */
    110       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.Gpio.DriveStrength),
    111       1.1  christos                         AML_OFFSET (Gpio.DriveStrength),
    112       1.1  christos                         2},
    113       1.1  christos 
    114       1.1  christos     /* Pin Table */
    115       1.1  christos 
    116       1.1  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.Gpio.PinTableLength),
    117       1.1  christos                         AML_OFFSET (Gpio.PinTableOffset),
    118       1.1  christos                         AML_OFFSET (Gpio.ResSourceOffset)},
    119       1.1  christos 
    120       1.1  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.Gpio.PinTable),
    121       1.1  christos                         AML_OFFSET (Gpio.PinTableOffset),
    122       1.1  christos                         0},
    123       1.1  christos 
    124       1.1  christos     /* Resource Source */
    125       1.1  christos 
    126       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Gpio.ResourceSource.Index),
    127       1.1  christos                         AML_OFFSET (Gpio.ResSourceIndex),
    128       1.1  christos                         1},
    129       1.1  christos 
    130       1.1  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringLength),
    131       1.1  christos                         AML_OFFSET (Gpio.ResSourceOffset),
    132       1.1  christos                         AML_OFFSET (Gpio.VendorOffset)},
    133       1.1  christos 
    134       1.1  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringPtr),
    135       1.1  christos                         AML_OFFSET (Gpio.ResSourceOffset),
    136       1.1  christos                         0},
    137       1.1  christos 
    138       1.1  christos     /* Vendor Data */
    139       1.1  christos 
    140       1.1  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.Gpio.VendorLength),
    141       1.1  christos                         AML_OFFSET (Gpio.VendorLength),
    142       1.1  christos                         1},
    143       1.1  christos 
    144       1.1  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.Gpio.VendorData),
    145       1.1  christos                         AML_OFFSET (Gpio.VendorOffset),
    146       1.1  christos                         0},
    147       1.1  christos };
    148       1.1  christos 
    149   1.1.1.7  christos /*******************************************************************************
    150   1.1.1.7  christos  *
    151   1.1.1.7  christos  * AcpiRsConvertPinfunction
    152   1.1.1.7  christos  *
    153   1.1.1.7  christos  ******************************************************************************/
    154   1.1.1.7  christos 
    155   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinFunction[13] =
    156   1.1.1.7  christos {
    157   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_FUNCTION,
    158   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_FUNCTION),
    159   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinFunction)},
    160   1.1.1.7  christos 
    161   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_FUNCTION,
    162   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_FUNCTION),
    163   1.1.1.7  christos                         0},
    164   1.1.1.7  christos 
    165   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.RevisionId),
    166   1.1.1.7  christos                         AML_OFFSET (PinFunction.RevisionId),
    167   1.1.1.7  christos                         1},
    168   1.1.1.7  christos 
    169   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
    170   1.1.1.7  christos                         AML_OFFSET (PinFunction.Flags),
    171   1.1.1.7  christos                         0},
    172   1.1.1.7  christos 
    173   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.PinConfig),
    174   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinConfig),
    175   1.1.1.7  christos                         1},
    176   1.1.1.7  christos 
    177   1.1.1.7  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.PinFunction.FunctionNumber),
    178   1.1.1.7  christos                         AML_OFFSET (PinFunction.FunctionNumber),
    179   1.1.1.7  christos                         2},
    180   1.1.1.7  christos 
    181   1.1.1.7  christos     /* Pin Table */
    182   1.1.1.7  christos 
    183   1.1.1.7  christos     /*
    184   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    185   1.1.1.7  christos      * structures directly but instead use offsets given here.
    186   1.1.1.7  christos      */
    187   1.1.1.7  christos 
    188   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTableLength),
    189   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinTableOffset),
    190   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset)},
    191   1.1.1.7  christos 
    192   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTable),
    193   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinTableOffset),
    194   1.1.1.7  christos                         0},
    195   1.1.1.7  christos 
    196   1.1.1.7  christos     /* Resource Source */
    197   1.1.1.7  christos 
    198   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.Index),
    199   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceIndex),
    200   1.1.1.7  christos                         1},
    201   1.1.1.7  christos 
    202   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringLength),
    203   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset),
    204   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorOffset)},
    205   1.1.1.7  christos 
    206   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringPtr),
    207   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset),
    208   1.1.1.7  christos                         0},
    209   1.1.1.7  christos 
    210   1.1.1.7  christos     /* Vendor Data */
    211   1.1.1.7  christos 
    212   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinFunction.VendorLength),
    213   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorLength),
    214   1.1.1.7  christos                         1},
    215   1.1.1.7  christos 
    216   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinFunction.VendorData),
    217   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorOffset),
    218   1.1.1.7  christos                         0},
    219   1.1.1.7  christos };
    220   1.1.1.7  christos 
    221       1.1  christos 
    222       1.1  christos /*******************************************************************************
    223       1.1  christos  *
    224  1.1.1.11  christos  * AcpiRsConvertCsi2SerialBus
    225  1.1.1.11  christos  *
    226  1.1.1.11  christos  ******************************************************************************/
    227  1.1.1.11  christos 
    228  1.1.1.11  christos ACPI_RSCONVERT_INFO     AcpiRsConvertCsi2SerialBus[14] =
    229  1.1.1.11  christos {
    230  1.1.1.11  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    231  1.1.1.11  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_CSI2_SERIALBUS),
    232  1.1.1.11  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertCsi2SerialBus)},
    233  1.1.1.11  christos 
    234  1.1.1.11  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    235  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS),
    236  1.1.1.11  christos                         0},
    237  1.1.1.11  christos 
    238  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    239  1.1.1.11  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    240  1.1.1.11  christos                         1},
    241  1.1.1.11  christos 
    242  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.Type),
    243  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Type),
    244  1.1.1.11  christos                         1},
    245  1.1.1.11  christos 
    246  1.1.1.11  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.ProducerConsumer),
    247  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Flags),
    248  1.1.1.11  christos                         1},
    249  1.1.1.11  christos 
    250  1.1.1.11  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.SlaveMode),
    251  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Flags),
    252  1.1.1.11  christos                         0},
    253  1.1.1.11  christos 
    254  1.1.1.11  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.PhyType),
    255  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
    256  1.1.1.11  christos                         0},
    257  1.1.1.11  christos 
    258  1.1.1.11  christos     {ACPI_RSC_6BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.LocalPortInstance),
    259  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
    260  1.1.1.11  christos                         2},
    261  1.1.1.11  christos 
    262  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.TypeRevisionId),
    263  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeRevisionId),
    264  1.1.1.11  christos                         1},
    265  1.1.1.11  christos 
    266  1.1.1.11  christos     /* Vendor data */
    267  1.1.1.11  christos 
    268  1.1.1.11  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorLength),
    269  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    270  1.1.1.11  christos                         AML_RESOURCE_CSI2_MIN_DATA_LEN},
    271  1.1.1.11  christos 
    272  1.1.1.11  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorData),
    273  1.1.1.11  christos                         0,
    274  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    275  1.1.1.11  christos 
    276  1.1.1.11  christos     /* Resource Source */
    277  1.1.1.11  christos 
    278  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.Index),
    279  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.ResSourceIndex),
    280  1.1.1.11  christos                         1},
    281  1.1.1.11  christos 
    282  1.1.1.11  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringLength),
    283  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    284  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    285  1.1.1.11  christos 
    286  1.1.1.11  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringPtr),
    287  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    288  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    289  1.1.1.11  christos };
    290  1.1.1.11  christos 
    291  1.1.1.11  christos 
    292  1.1.1.11  christos /*******************************************************************************
    293  1.1.1.11  christos  *
    294       1.1  christos  * AcpiRsConvertI2cSerialBus
    295       1.1  christos  *
    296       1.1  christos  ******************************************************************************/
    297       1.1  christos 
    298   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertI2cSerialBus[17] =
    299       1.1  christos {
    300       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    301       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS),
    302       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertI2cSerialBus)},
    303       1.1  christos 
    304       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    305       1.1  christos                         sizeof (AML_RESOURCE_I2C_SERIALBUS),
    306       1.1  christos                         0},
    307       1.1  christos 
    308       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    309       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    310       1.1  christos                         1},
    311       1.1  christos 
    312       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    313       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    314       1.1  christos                         1},
    315       1.1  christos 
    316       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    317       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    318       1.1  christos                         0},
    319       1.1  christos 
    320       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    321       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    322       1.1  christos                         1},
    323       1.1  christos 
    324   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    325   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    326   1.1.1.5  christos                         2},
    327   1.1.1.5  christos 
    328       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    329       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    330       1.1  christos                         1},
    331       1.1  christos 
    332       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    333       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    334       1.1  christos                         1},
    335       1.1  christos 
    336       1.1  christos     /* Vendor data */
    337       1.1  christos 
    338       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    339       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    340       1.1  christos                         AML_RESOURCE_I2C_MIN_DATA_LEN},
    341       1.1  christos 
    342       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    343       1.1  christos                         0,
    344       1.1  christos                         sizeof (AML_RESOURCE_I2C_SERIALBUS)},
    345       1.1  christos 
    346       1.1  christos     /* Resource Source */
    347       1.1  christos 
    348       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    349       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    350       1.1  christos                         1},
    351       1.1  christos 
    352       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    353       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    354       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    355       1.1  christos 
    356       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    357       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    358       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    359       1.1  christos 
    360       1.1  christos     /* I2C bus type specific */
    361       1.1  christos 
    362       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.I2cSerialBus.AccessMode),
    363       1.1  christos                         AML_OFFSET (I2cSerialBus.TypeSpecificFlags),
    364       1.1  christos                         0},
    365       1.1  christos 
    366       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.I2cSerialBus.ConnectionSpeed),
    367       1.1  christos                         AML_OFFSET (I2cSerialBus.ConnectionSpeed),
    368       1.1  christos                         1},
    369       1.1  christos 
    370       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.I2cSerialBus.SlaveAddress),
    371       1.1  christos                         AML_OFFSET (I2cSerialBus.SlaveAddress),
    372       1.1  christos                         1},
    373       1.1  christos };
    374       1.1  christos 
    375       1.1  christos 
    376       1.1  christos /*******************************************************************************
    377       1.1  christos  *
    378       1.1  christos  * AcpiRsConvertSpiSerialBus
    379       1.1  christos  *
    380       1.1  christos  ******************************************************************************/
    381       1.1  christos 
    382   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertSpiSerialBus[21] =
    383       1.1  christos {
    384       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    385       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS),
    386       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertSpiSerialBus)},
    387       1.1  christos 
    388       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    389       1.1  christos                         sizeof (AML_RESOURCE_SPI_SERIALBUS),
    390       1.1  christos                         0},
    391       1.1  christos 
    392       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    393       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    394       1.1  christos                         1},
    395       1.1  christos 
    396       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    397       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    398       1.1  christos                         1},
    399       1.1  christos 
    400       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    401       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    402       1.1  christos                         0},
    403       1.1  christos 
    404       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    405       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    406       1.1  christos                         1},
    407       1.1  christos 
    408   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    409   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    410   1.1.1.5  christos                         2},
    411   1.1.1.5  christos 
    412       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    413       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    414       1.1  christos                         1},
    415       1.1  christos 
    416       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    417       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    418       1.1  christos                         1},
    419       1.1  christos 
    420       1.1  christos     /* Vendor data */
    421       1.1  christos 
    422       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    423       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    424       1.1  christos                         AML_RESOURCE_SPI_MIN_DATA_LEN},
    425       1.1  christos 
    426       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    427       1.1  christos                         0,
    428       1.1  christos                         sizeof (AML_RESOURCE_SPI_SERIALBUS)},
    429       1.1  christos 
    430       1.1  christos     /* Resource Source */
    431       1.1  christos 
    432       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    433       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    434       1.1  christos                         1},
    435       1.1  christos 
    436       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    437       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    438       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    439       1.1  christos 
    440       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    441       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    442       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    443       1.1  christos 
    444       1.1  christos     /* Spi bus type specific  */
    445       1.1  christos 
    446       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.WireMode),
    447       1.1  christos                         AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
    448       1.1  christos                         0},
    449       1.1  christos 
    450       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.DevicePolarity),
    451       1.1  christos                         AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
    452       1.1  christos                         1},
    453       1.1  christos 
    454       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.DataBitLength),
    455       1.1  christos                         AML_OFFSET (SpiSerialBus.DataBitLength),
    456       1.1  christos                         1},
    457       1.1  christos 
    458       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPhase),
    459       1.1  christos                         AML_OFFSET (SpiSerialBus.ClockPhase),
    460       1.1  christos                         1},
    461       1.1  christos 
    462       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPolarity),
    463       1.1  christos                         AML_OFFSET (SpiSerialBus.ClockPolarity),
    464       1.1  christos                         1},
    465       1.1  christos 
    466       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.SpiSerialBus.DeviceSelection),
    467       1.1  christos                         AML_OFFSET (SpiSerialBus.DeviceSelection),
    468       1.1  christos                         1},
    469       1.1  christos 
    470       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.SpiSerialBus.ConnectionSpeed),
    471       1.1  christos                         AML_OFFSET (SpiSerialBus.ConnectionSpeed),
    472       1.1  christos                         1},
    473       1.1  christos };
    474       1.1  christos 
    475       1.1  christos 
    476       1.1  christos /*******************************************************************************
    477       1.1  christos  *
    478       1.1  christos  * AcpiRsConvertUartSerialBus
    479       1.1  christos  *
    480       1.1  christos  ******************************************************************************/
    481       1.1  christos 
    482   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertUartSerialBus[23] =
    483       1.1  christos {
    484       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    485       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS),
    486       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertUartSerialBus)},
    487       1.1  christos 
    488       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    489       1.1  christos                         sizeof (AML_RESOURCE_UART_SERIALBUS),
    490       1.1  christos                         0},
    491       1.1  christos 
    492       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    493       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    494       1.1  christos                         1},
    495       1.1  christos 
    496       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    497       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    498       1.1  christos                         1},
    499       1.1  christos 
    500       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    501       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    502       1.1  christos                         0},
    503       1.1  christos 
    504       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    505       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    506       1.1  christos                         1},
    507       1.1  christos 
    508   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    509   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    510   1.1.1.5  christos                         2},
    511   1.1.1.5  christos 
    512       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    513       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    514       1.1  christos                         1},
    515       1.1  christos 
    516       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    517       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    518       1.1  christos                         1},
    519       1.1  christos 
    520       1.1  christos     /* Vendor data */
    521       1.1  christos 
    522       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    523       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    524       1.1  christos                         AML_RESOURCE_UART_MIN_DATA_LEN},
    525       1.1  christos 
    526       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    527       1.1  christos                         0,
    528       1.1  christos                         sizeof (AML_RESOURCE_UART_SERIALBUS)},
    529       1.1  christos 
    530       1.1  christos     /* Resource Source */
    531       1.1  christos 
    532       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    533       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    534       1.1  christos                         1},
    535       1.1  christos 
    536       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    537       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    538       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    539       1.1  christos 
    540       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    541       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    542       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    543       1.1  christos 
    544       1.1  christos     /* Uart bus type specific  */
    545       1.1  christos 
    546       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.FlowControl),
    547       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    548       1.1  christos                         0},
    549       1.1  christos 
    550       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.StopBits),
    551       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    552       1.1  christos                         2},
    553       1.1  christos 
    554       1.1  christos     {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.DataBits),
    555       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    556       1.1  christos                         4},
    557       1.1  christos 
    558       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.Endian),
    559       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    560       1.1  christos                         7},
    561       1.1  christos 
    562       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.UartSerialBus.Parity),
    563       1.1  christos                         AML_OFFSET (UartSerialBus.Parity),
    564       1.1  christos                         1},
    565       1.1  christos 
    566       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.UartSerialBus.LinesEnabled),
    567       1.1  christos                         AML_OFFSET (UartSerialBus.LinesEnabled),
    568       1.1  christos                         1},
    569       1.1  christos 
    570       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.UartSerialBus.RxFifoSize),
    571       1.1  christos                         AML_OFFSET (UartSerialBus.RxFifoSize),
    572       1.1  christos                         1},
    573       1.1  christos 
    574       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.UartSerialBus.TxFifoSize),
    575       1.1  christos                         AML_OFFSET (UartSerialBus.TxFifoSize),
    576       1.1  christos                         1},
    577       1.1  christos 
    578       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.UartSerialBus.DefaultBaudRate),
    579       1.1  christos                         AML_OFFSET (UartSerialBus.DefaultBaudRate),
    580       1.1  christos                         1},
    581       1.1  christos };
    582   1.1.1.7  christos 
    583   1.1.1.7  christos 
    584   1.1.1.7  christos /*******************************************************************************
    585   1.1.1.7  christos  *
    586   1.1.1.7  christos  * AcpiRsConvertPinConfig
    587   1.1.1.7  christos  *
    588   1.1.1.7  christos  ******************************************************************************/
    589   1.1.1.7  christos 
    590   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinConfig[14] =
    591   1.1.1.7  christos {
    592   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_CONFIG,
    593   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_CONFIG),
    594   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinConfig)},
    595   1.1.1.7  christos 
    596   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_CONFIG,
    597   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_CONFIG),
    598   1.1.1.7  christos                         0},
    599   1.1.1.7  christos 
    600   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.RevisionId),
    601   1.1.1.7  christos                         AML_OFFSET (PinConfig.RevisionId),
    602   1.1.1.7  christos                         1},
    603   1.1.1.7  christos 
    604   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
    605   1.1.1.7  christos                         AML_OFFSET (PinConfig.Flags),
    606   1.1.1.7  christos                         0},
    607   1.1.1.7  christos 
    608   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.ProducerConsumer),
    609   1.1.1.7  christos                         AML_OFFSET (PinConfig.Flags),
    610   1.1.1.7  christos                         1},
    611   1.1.1.7  christos 
    612   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.PinConfigType),
    613   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinConfigType),
    614   1.1.1.7  christos                         1},
    615   1.1.1.7  christos 
    616   1.1.1.7  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.PinConfig.PinConfigValue),
    617   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinConfigValue),
    618   1.1.1.7  christos                         1},
    619   1.1.1.7  christos 
    620   1.1.1.7  christos     /* Pin Table */
    621   1.1.1.7  christos 
    622   1.1.1.7  christos     /*
    623   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    624   1.1.1.7  christos      * structures directly but instead use offsets given here.
    625   1.1.1.7  christos      */
    626   1.1.1.7  christos 
    627   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTableLength),
    628   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinTableOffset),
    629   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset)},
    630   1.1.1.7  christos 
    631   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTable),
    632   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinTableOffset),
    633   1.1.1.7  christos                         0},
    634   1.1.1.7  christos 
    635   1.1.1.7  christos     /* Resource Source */
    636   1.1.1.7  christos 
    637   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.Index),
    638   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceIndex),
    639   1.1.1.7  christos                         1},
    640   1.1.1.7  christos 
    641   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringLength),
    642   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset),
    643   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorOffset)},
    644   1.1.1.7  christos 
    645   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringPtr),
    646   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset),
    647   1.1.1.7  christos                         0},
    648   1.1.1.7  christos 
    649   1.1.1.7  christos     /* Vendor Data */
    650   1.1.1.7  christos 
    651   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinConfig.VendorLength),
    652   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorLength),
    653   1.1.1.7  christos                         1},
    654   1.1.1.7  christos 
    655   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinConfig.VendorData),
    656   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorOffset),
    657   1.1.1.7  christos                         0},
    658   1.1.1.7  christos };
    659   1.1.1.7  christos 
    660   1.1.1.7  christos /*******************************************************************************
    661   1.1.1.7  christos  *
    662   1.1.1.7  christos  * AcpiRsConvertPinGroup
    663   1.1.1.7  christos  *
    664   1.1.1.7  christos  ******************************************************************************/
    665   1.1.1.7  christos 
    666   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroup[10] =
    667   1.1.1.7  christos {
    668   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP,
    669   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP),
    670   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroup)},
    671   1.1.1.7  christos 
    672   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP,
    673   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP),
    674   1.1.1.7  christos                         0},
    675   1.1.1.7  christos 
    676   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroup.RevisionId),
    677   1.1.1.7  christos                         AML_OFFSET (PinGroup.RevisionId),
    678   1.1.1.7  christos                         1},
    679   1.1.1.7  christos 
    680   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroup.ProducerConsumer),
    681   1.1.1.7  christos                         AML_OFFSET (PinGroup.Flags),
    682   1.1.1.7  christos                         0},
    683   1.1.1.7  christos 
    684   1.1.1.7  christos     /* Pin Table */
    685   1.1.1.7  christos 
    686   1.1.1.7  christos     /*
    687   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    688   1.1.1.7  christos      * structures directly but instead use offsets given here.
    689   1.1.1.7  christos      */
    690   1.1.1.7  christos 
    691   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTableLength),
    692   1.1.1.7  christos                         AML_OFFSET (PinGroup.PinTableOffset),
    693   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset)},
    694   1.1.1.7  christos 
    695   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTable),
    696   1.1.1.7  christos                         AML_OFFSET (PinGroup.PinTableOffset),
    697   1.1.1.7  christos                         0},
    698   1.1.1.7  christos 
    699   1.1.1.7  christos     /* Resource Label */
    700   1.1.1.7  christos 
    701   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringLength),
    702   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset),
    703   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorOffset)},
    704   1.1.1.7  christos 
    705   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringPtr),
    706   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset),
    707   1.1.1.7  christos                         0},
    708   1.1.1.7  christos 
    709   1.1.1.7  christos     /* Vendor Data */
    710   1.1.1.7  christos 
    711   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroup.VendorLength),
    712   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorLength),
    713   1.1.1.7  christos                         1},
    714   1.1.1.7  christos 
    715   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroup.VendorData),
    716   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorOffset),
    717   1.1.1.7  christos                         0},
    718   1.1.1.7  christos };
    719   1.1.1.7  christos 
    720   1.1.1.7  christos /*******************************************************************************
    721   1.1.1.7  christos  *
    722   1.1.1.7  christos  * AcpiRsConvertPinGroupFunction
    723   1.1.1.7  christos  *
    724   1.1.1.7  christos  ******************************************************************************/
    725   1.1.1.7  christos 
    726   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupFunction[13] =
    727   1.1.1.7  christos {
    728   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION,
    729   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_FUNCTION),
    730   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroupFunction)},
    731   1.1.1.7  christos 
    732   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
    733   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP_FUNCTION),
    734   1.1.1.7  christos                         0},
    735   1.1.1.7  christos 
    736   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupFunction.RevisionId),
    737   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.RevisionId),
    738   1.1.1.7  christos                         1},
    739   1.1.1.7  christos 
    740   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
    741   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.Flags),
    742   1.1.1.7  christos                         0},
    743   1.1.1.7  christos 
    744   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.ProducerConsumer),
    745   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.Flags),
    746   1.1.1.7  christos                         1},
    747   1.1.1.7  christos 
    748   1.1.1.7  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.PinGroupFunction.FunctionNumber),
    749   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.FunctionNumber),
    750   1.1.1.7  christos                         1},
    751   1.1.1.7  christos 
    752   1.1.1.7  christos     /* Resource Source */
    753   1.1.1.7  christos 
    754   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.Index),
    755   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceIndex),
    756   1.1.1.7  christos                         1},
    757   1.1.1.7  christos 
    758   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringLength),
    759   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceOffset),
    760   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset)},
    761   1.1.1.7  christos 
    762   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringPtr),
    763   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceOffset),
    764   1.1.1.7  christos                         0},
    765   1.1.1.7  christos 
    766   1.1.1.7  christos     /* Resource Source Label */
    767   1.1.1.7  christos 
    768   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringLength),
    769   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
    770   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorOffset)},
    771   1.1.1.7  christos 
    772   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringPtr),
    773   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
    774   1.1.1.7  christos                         0},
    775   1.1.1.7  christos 
    776   1.1.1.7  christos     /* Vendor Data */
    777   1.1.1.7  christos 
    778   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroupFunction.VendorLength),
    779   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorLength),
    780   1.1.1.7  christos                         1},
    781   1.1.1.7  christos 
    782   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.VendorData),
    783   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorOffset),
    784   1.1.1.7  christos                         0},
    785   1.1.1.7  christos };
    786   1.1.1.7  christos 
    787   1.1.1.7  christos /*******************************************************************************
    788   1.1.1.7  christos  *
    789   1.1.1.7  christos  * AcpiRsConvertPinGroupConfig
    790   1.1.1.7  christos  *
    791   1.1.1.7  christos  ******************************************************************************/
    792   1.1.1.7  christos 
    793   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupConfig[14] =
    794   1.1.1.7  christos {
    795   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG,
    796   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_CONFIG),
    797   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroupConfig)},
    798   1.1.1.7  christos 
    799   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
    800   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP_CONFIG),
    801   1.1.1.7  christos                         0},
    802   1.1.1.7  christos 
    803   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.RevisionId),
    804   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.RevisionId),
    805   1.1.1.7  christos                         1},
    806   1.1.1.7  christos 
    807   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
    808   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.Flags),
    809   1.1.1.7  christos                         0},
    810   1.1.1.7  christos 
    811   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.ProducerConsumer),
    812   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.Flags),
    813   1.1.1.7  christos                         1},
    814   1.1.1.7  christos 
    815   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigType),
    816   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.PinConfigType),
    817   1.1.1.7  christos                         1},
    818   1.1.1.7  christos 
    819   1.1.1.7  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigValue),
    820   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.PinConfigValue),
    821   1.1.1.7  christos                         1},
    822   1.1.1.7  christos 
    823   1.1.1.7  christos     /* Resource Source */
    824   1.1.1.7  christos 
    825   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.Index),
    826   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceIndex),
    827   1.1.1.7  christos                         1},
    828   1.1.1.7  christos 
    829   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringLength),
    830   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceOffset),
    831   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset)},
    832   1.1.1.7  christos 
    833   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringPtr),
    834   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceOffset),
    835   1.1.1.7  christos                         0},
    836   1.1.1.7  christos 
    837   1.1.1.7  christos     /* Resource Source Label */
    838   1.1.1.7  christos 
    839   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringLength),
    840   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
    841   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorOffset)},
    842   1.1.1.7  christos 
    843   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringPtr),
    844   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
    845   1.1.1.7  christos                         0},
    846   1.1.1.7  christos 
    847   1.1.1.7  christos     /* Vendor Data */
    848   1.1.1.7  christos 
    849   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroupConfig.VendorLength),
    850   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorLength),
    851   1.1.1.7  christos                         1},
    852   1.1.1.7  christos 
    853   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.VendorData),
    854   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorOffset),
    855   1.1.1.7  christos                         0},
    856   1.1.1.7  christos };
    857