Home | History | Annotate | Line # | Download | only in resources
rsserial.c revision 1.1.1.13
      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.13  christos  * Copyright (C) 2000 - 2023, 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.13  christos  * AcpiRsConvertClockInput
    152  1.1.1.13  christos  *
    153  1.1.1.13  christos  ******************************************************************************/
    154  1.1.1.13  christos 
    155  1.1.1.13  christos ACPI_RSCONVERT_INFO     AcpiRsConvertClockInput[8] =
    156  1.1.1.13  christos {
    157  1.1.1.13  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_CLOCK_INPUT,
    158  1.1.1.13  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_CLOCK_INPUT),
    159  1.1.1.13  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertClockInput)},
    160  1.1.1.13  christos 
    161  1.1.1.13  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_CLOCK_INPUT,
    162  1.1.1.13  christos                         sizeof (AML_RESOURCE_CLOCK_INPUT),
    163  1.1.1.13  christos                         0},
    164  1.1.1.13  christos 
    165  1.1.1.13  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.ClockInput.RevisionId),
    166  1.1.1.13  christos                         AML_OFFSET (ClockInput.RevisionId),
    167  1.1.1.13  christos                         1},
    168  1.1.1.13  christos 
    169  1.1.1.13  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Mode),
    170  1.1.1.13  christos                         AML_OFFSET (ClockInput.Flags),
    171  1.1.1.13  christos                         0},
    172  1.1.1.13  christos 
    173  1.1.1.13  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Scale),
    174  1.1.1.13  christos                         AML_OFFSET (ClockInput.Flags),
    175  1.1.1.13  christos                         1},
    176  1.1.1.13  christos 
    177  1.1.1.13  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.ClockInput.FrequencyDivisor),
    178  1.1.1.13  christos                         AML_OFFSET (ClockInput.FrequencyDivisor),
    179  1.1.1.13  christos                         2},
    180  1.1.1.13  christos 
    181  1.1.1.13  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.ClockInput.FrequencyNumerator),
    182  1.1.1.13  christos                         AML_OFFSET (ClockInput.FrequencyNumerator),
    183  1.1.1.13  christos                         4},
    184  1.1.1.13  christos 
    185  1.1.1.13  christos     /* Resource Source */
    186  1.1.1.13  christos     {ACPI_RSC_SOURCE,    ACPI_RS_OFFSET (Data.ClockInput.ResourceSource),
    187  1.1.1.13  christos                         0,
    188  1.1.1.13  christos                         sizeof(AML_RESOURCE_CLOCK_INPUT)},
    189  1.1.1.13  christos 
    190  1.1.1.13  christos };
    191  1.1.1.13  christos 
    192  1.1.1.13  christos 
    193  1.1.1.13  christos /*******************************************************************************
    194  1.1.1.13  christos  *
    195   1.1.1.7  christos  * AcpiRsConvertPinfunction
    196   1.1.1.7  christos  *
    197   1.1.1.7  christos  ******************************************************************************/
    198   1.1.1.7  christos 
    199   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinFunction[13] =
    200   1.1.1.7  christos {
    201   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_FUNCTION,
    202   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_FUNCTION),
    203   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinFunction)},
    204   1.1.1.7  christos 
    205   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_FUNCTION,
    206   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_FUNCTION),
    207   1.1.1.7  christos                         0},
    208   1.1.1.7  christos 
    209   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.RevisionId),
    210   1.1.1.7  christos                         AML_OFFSET (PinFunction.RevisionId),
    211   1.1.1.7  christos                         1},
    212   1.1.1.7  christos 
    213   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
    214   1.1.1.7  christos                         AML_OFFSET (PinFunction.Flags),
    215   1.1.1.7  christos                         0},
    216   1.1.1.7  christos 
    217   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.PinConfig),
    218   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinConfig),
    219   1.1.1.7  christos                         1},
    220   1.1.1.7  christos 
    221   1.1.1.7  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.PinFunction.FunctionNumber),
    222   1.1.1.7  christos                         AML_OFFSET (PinFunction.FunctionNumber),
    223   1.1.1.7  christos                         2},
    224   1.1.1.7  christos 
    225   1.1.1.7  christos     /* Pin Table */
    226   1.1.1.7  christos 
    227   1.1.1.7  christos     /*
    228   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    229   1.1.1.7  christos      * structures directly but instead use offsets given here.
    230   1.1.1.7  christos      */
    231   1.1.1.7  christos 
    232   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTableLength),
    233   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinTableOffset),
    234   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset)},
    235   1.1.1.7  christos 
    236   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTable),
    237   1.1.1.7  christos                         AML_OFFSET (PinFunction.PinTableOffset),
    238   1.1.1.7  christos                         0},
    239   1.1.1.7  christos 
    240   1.1.1.7  christos     /* Resource Source */
    241   1.1.1.7  christos 
    242   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.Index),
    243   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceIndex),
    244   1.1.1.7  christos                         1},
    245   1.1.1.7  christos 
    246   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringLength),
    247   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset),
    248   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorOffset)},
    249   1.1.1.7  christos 
    250   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringPtr),
    251   1.1.1.7  christos                         AML_OFFSET (PinFunction.ResSourceOffset),
    252   1.1.1.7  christos                         0},
    253   1.1.1.7  christos 
    254   1.1.1.7  christos     /* Vendor Data */
    255   1.1.1.7  christos 
    256   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinFunction.VendorLength),
    257   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorLength),
    258   1.1.1.7  christos                         1},
    259   1.1.1.7  christos 
    260   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinFunction.VendorData),
    261   1.1.1.7  christos                         AML_OFFSET (PinFunction.VendorOffset),
    262   1.1.1.7  christos                         0},
    263   1.1.1.7  christos };
    264   1.1.1.7  christos 
    265       1.1  christos 
    266       1.1  christos /*******************************************************************************
    267       1.1  christos  *
    268  1.1.1.11  christos  * AcpiRsConvertCsi2SerialBus
    269  1.1.1.11  christos  *
    270  1.1.1.11  christos  ******************************************************************************/
    271  1.1.1.11  christos 
    272  1.1.1.11  christos ACPI_RSCONVERT_INFO     AcpiRsConvertCsi2SerialBus[14] =
    273  1.1.1.11  christos {
    274  1.1.1.11  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    275  1.1.1.11  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_CSI2_SERIALBUS),
    276  1.1.1.11  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertCsi2SerialBus)},
    277  1.1.1.11  christos 
    278  1.1.1.11  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    279  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS),
    280  1.1.1.11  christos                         0},
    281  1.1.1.11  christos 
    282  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    283  1.1.1.11  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    284  1.1.1.11  christos                         1},
    285  1.1.1.11  christos 
    286  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.Type),
    287  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Type),
    288  1.1.1.11  christos                         1},
    289  1.1.1.11  christos 
    290  1.1.1.11  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.ProducerConsumer),
    291  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Flags),
    292  1.1.1.11  christos                         1},
    293  1.1.1.11  christos 
    294  1.1.1.11  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.SlaveMode),
    295  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.Flags),
    296  1.1.1.11  christos                         0},
    297  1.1.1.11  christos 
    298  1.1.1.11  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.PhyType),
    299  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
    300  1.1.1.11  christos                         0},
    301  1.1.1.11  christos 
    302  1.1.1.11  christos     {ACPI_RSC_6BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.LocalPortInstance),
    303  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
    304  1.1.1.11  christos                         2},
    305  1.1.1.11  christos 
    306  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.TypeRevisionId),
    307  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeRevisionId),
    308  1.1.1.11  christos                         1},
    309  1.1.1.11  christos 
    310  1.1.1.11  christos     /* Vendor data */
    311  1.1.1.11  christos 
    312  1.1.1.11  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorLength),
    313  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    314  1.1.1.11  christos                         AML_RESOURCE_CSI2_MIN_DATA_LEN},
    315  1.1.1.11  christos 
    316  1.1.1.11  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorData),
    317  1.1.1.11  christos                         0,
    318  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    319  1.1.1.11  christos 
    320  1.1.1.11  christos     /* Resource Source */
    321  1.1.1.11  christos 
    322  1.1.1.11  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.Index),
    323  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.ResSourceIndex),
    324  1.1.1.11  christos                         1},
    325  1.1.1.11  christos 
    326  1.1.1.11  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringLength),
    327  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    328  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    329  1.1.1.11  christos 
    330  1.1.1.11  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringPtr),
    331  1.1.1.11  christos                         AML_OFFSET (Csi2SerialBus.TypeDataLength),
    332  1.1.1.11  christos                         sizeof (AML_RESOURCE_CSI2_SERIALBUS)},
    333  1.1.1.11  christos };
    334  1.1.1.11  christos 
    335  1.1.1.11  christos 
    336  1.1.1.11  christos /*******************************************************************************
    337  1.1.1.11  christos  *
    338       1.1  christos  * AcpiRsConvertI2cSerialBus
    339       1.1  christos  *
    340       1.1  christos  ******************************************************************************/
    341       1.1  christos 
    342   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertI2cSerialBus[17] =
    343       1.1  christos {
    344       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    345       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS),
    346       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertI2cSerialBus)},
    347       1.1  christos 
    348       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    349       1.1  christos                         sizeof (AML_RESOURCE_I2C_SERIALBUS),
    350       1.1  christos                         0},
    351       1.1  christos 
    352       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    353       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    354       1.1  christos                         1},
    355       1.1  christos 
    356       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    357       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    358       1.1  christos                         1},
    359       1.1  christos 
    360       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    361       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    362       1.1  christos                         0},
    363       1.1  christos 
    364       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    365       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    366       1.1  christos                         1},
    367       1.1  christos 
    368   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    369   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    370   1.1.1.5  christos                         2},
    371   1.1.1.5  christos 
    372       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    373       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    374       1.1  christos                         1},
    375       1.1  christos 
    376       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    377       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    378       1.1  christos                         1},
    379       1.1  christos 
    380       1.1  christos     /* Vendor data */
    381       1.1  christos 
    382       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    383       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    384       1.1  christos                         AML_RESOURCE_I2C_MIN_DATA_LEN},
    385       1.1  christos 
    386       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    387       1.1  christos                         0,
    388       1.1  christos                         sizeof (AML_RESOURCE_I2C_SERIALBUS)},
    389       1.1  christos 
    390       1.1  christos     /* Resource Source */
    391       1.1  christos 
    392       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    393       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    394       1.1  christos                         1},
    395       1.1  christos 
    396       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    397       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    398       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    399       1.1  christos 
    400       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    401       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    402       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    403       1.1  christos 
    404       1.1  christos     /* I2C bus type specific */
    405       1.1  christos 
    406       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.I2cSerialBus.AccessMode),
    407       1.1  christos                         AML_OFFSET (I2cSerialBus.TypeSpecificFlags),
    408       1.1  christos                         0},
    409       1.1  christos 
    410       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.I2cSerialBus.ConnectionSpeed),
    411       1.1  christos                         AML_OFFSET (I2cSerialBus.ConnectionSpeed),
    412       1.1  christos                         1},
    413       1.1  christos 
    414       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.I2cSerialBus.SlaveAddress),
    415       1.1  christos                         AML_OFFSET (I2cSerialBus.SlaveAddress),
    416       1.1  christos                         1},
    417       1.1  christos };
    418       1.1  christos 
    419       1.1  christos 
    420       1.1  christos /*******************************************************************************
    421       1.1  christos  *
    422       1.1  christos  * AcpiRsConvertSpiSerialBus
    423       1.1  christos  *
    424       1.1  christos  ******************************************************************************/
    425       1.1  christos 
    426   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertSpiSerialBus[21] =
    427       1.1  christos {
    428       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    429       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS),
    430       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertSpiSerialBus)},
    431       1.1  christos 
    432       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    433       1.1  christos                         sizeof (AML_RESOURCE_SPI_SERIALBUS),
    434       1.1  christos                         0},
    435       1.1  christos 
    436       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    437       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    438       1.1  christos                         1},
    439       1.1  christos 
    440       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    441       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    442       1.1  christos                         1},
    443       1.1  christos 
    444       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    445       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    446       1.1  christos                         0},
    447       1.1  christos 
    448       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    449       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    450       1.1  christos                         1},
    451       1.1  christos 
    452   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    453   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    454   1.1.1.5  christos                         2},
    455   1.1.1.5  christos 
    456       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    457       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    458       1.1  christos                         1},
    459       1.1  christos 
    460       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    461       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    462       1.1  christos                         1},
    463       1.1  christos 
    464       1.1  christos     /* Vendor data */
    465       1.1  christos 
    466       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    467       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    468       1.1  christos                         AML_RESOURCE_SPI_MIN_DATA_LEN},
    469       1.1  christos 
    470       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    471       1.1  christos                         0,
    472       1.1  christos                         sizeof (AML_RESOURCE_SPI_SERIALBUS)},
    473       1.1  christos 
    474       1.1  christos     /* Resource Source */
    475       1.1  christos 
    476       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    477       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    478       1.1  christos                         1},
    479       1.1  christos 
    480       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    481       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    482       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    483       1.1  christos 
    484       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    485       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    486       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    487       1.1  christos 
    488       1.1  christos     /* Spi bus type specific  */
    489       1.1  christos 
    490       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.WireMode),
    491       1.1  christos                         AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
    492       1.1  christos                         0},
    493       1.1  christos 
    494       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.DevicePolarity),
    495       1.1  christos                         AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
    496       1.1  christos                         1},
    497       1.1  christos 
    498       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.DataBitLength),
    499       1.1  christos                         AML_OFFSET (SpiSerialBus.DataBitLength),
    500       1.1  christos                         1},
    501       1.1  christos 
    502       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPhase),
    503       1.1  christos                         AML_OFFSET (SpiSerialBus.ClockPhase),
    504       1.1  christos                         1},
    505       1.1  christos 
    506       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPolarity),
    507       1.1  christos                         AML_OFFSET (SpiSerialBus.ClockPolarity),
    508       1.1  christos                         1},
    509       1.1  christos 
    510       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.SpiSerialBus.DeviceSelection),
    511       1.1  christos                         AML_OFFSET (SpiSerialBus.DeviceSelection),
    512       1.1  christos                         1},
    513       1.1  christos 
    514       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.SpiSerialBus.ConnectionSpeed),
    515       1.1  christos                         AML_OFFSET (SpiSerialBus.ConnectionSpeed),
    516       1.1  christos                         1},
    517       1.1  christos };
    518       1.1  christos 
    519       1.1  christos 
    520       1.1  christos /*******************************************************************************
    521       1.1  christos  *
    522       1.1  christos  * AcpiRsConvertUartSerialBus
    523       1.1  christos  *
    524       1.1  christos  ******************************************************************************/
    525       1.1  christos 
    526   1.1.1.5  christos ACPI_RSCONVERT_INFO     AcpiRsConvertUartSerialBus[23] =
    527       1.1  christos {
    528       1.1  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_SERIAL_BUS,
    529       1.1  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS),
    530       1.1  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertUartSerialBus)},
    531       1.1  christos 
    532       1.1  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_SERIAL_BUS,
    533       1.1  christos                         sizeof (AML_RESOURCE_UART_SERIALBUS),
    534       1.1  christos                         0},
    535       1.1  christos 
    536       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
    537       1.1  christos                         AML_OFFSET (CommonSerialBus.RevisionId),
    538       1.1  christos                         1},
    539       1.1  christos 
    540       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
    541       1.1  christos                         AML_OFFSET (CommonSerialBus.Type),
    542       1.1  christos                         1},
    543       1.1  christos 
    544       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
    545       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    546       1.1  christos                         0},
    547       1.1  christos 
    548       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
    549       1.1  christos                         AML_OFFSET (CommonSerialBus.Flags),
    550       1.1  christos                         1},
    551       1.1  christos 
    552   1.1.1.5  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
    553   1.1.1.5  christos                         AML_OFFSET (CommonSerialBus.Flags),
    554   1.1.1.5  christos                         2},
    555   1.1.1.5  christos 
    556       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
    557       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeRevisionId),
    558       1.1  christos                         1},
    559       1.1  christos 
    560       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
    561       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    562       1.1  christos                         1},
    563       1.1  christos 
    564       1.1  christos     /* Vendor data */
    565       1.1  christos 
    566       1.1  christos     {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
    567       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    568       1.1  christos                         AML_RESOURCE_UART_MIN_DATA_LEN},
    569       1.1  christos 
    570       1.1  christos     {ACPI_RSC_MOVE_SERIAL_VEN,  ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
    571       1.1  christos                         0,
    572       1.1  christos                         sizeof (AML_RESOURCE_UART_SERIALBUS)},
    573       1.1  christos 
    574       1.1  christos     /* Resource Source */
    575       1.1  christos 
    576       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
    577       1.1  christos                         AML_OFFSET (CommonSerialBus.ResSourceIndex),
    578       1.1  christos                         1},
    579       1.1  christos 
    580       1.1  christos     {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
    581       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    582       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    583       1.1  christos 
    584       1.1  christos     {ACPI_RSC_MOVE_SERIAL_RES,  ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
    585       1.1  christos                         AML_OFFSET (CommonSerialBus.TypeDataLength),
    586       1.1  christos                         sizeof (AML_RESOURCE_COMMON_SERIALBUS)},
    587       1.1  christos 
    588       1.1  christos     /* Uart bus type specific  */
    589       1.1  christos 
    590       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.FlowControl),
    591       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    592       1.1  christos                         0},
    593       1.1  christos 
    594       1.1  christos     {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.StopBits),
    595       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    596       1.1  christos                         2},
    597       1.1  christos 
    598       1.1  christos     {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.DataBits),
    599       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    600       1.1  christos                         4},
    601       1.1  christos 
    602       1.1  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.Endian),
    603       1.1  christos                         AML_OFFSET (UartSerialBus.TypeSpecificFlags),
    604       1.1  christos                         7},
    605       1.1  christos 
    606       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.UartSerialBus.Parity),
    607       1.1  christos                         AML_OFFSET (UartSerialBus.Parity),
    608       1.1  christos                         1},
    609       1.1  christos 
    610       1.1  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.UartSerialBus.LinesEnabled),
    611       1.1  christos                         AML_OFFSET (UartSerialBus.LinesEnabled),
    612       1.1  christos                         1},
    613       1.1  christos 
    614       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.UartSerialBus.RxFifoSize),
    615       1.1  christos                         AML_OFFSET (UartSerialBus.RxFifoSize),
    616       1.1  christos                         1},
    617       1.1  christos 
    618       1.1  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.UartSerialBus.TxFifoSize),
    619       1.1  christos                         AML_OFFSET (UartSerialBus.TxFifoSize),
    620       1.1  christos                         1},
    621       1.1  christos 
    622       1.1  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.UartSerialBus.DefaultBaudRate),
    623       1.1  christos                         AML_OFFSET (UartSerialBus.DefaultBaudRate),
    624       1.1  christos                         1},
    625       1.1  christos };
    626   1.1.1.7  christos 
    627   1.1.1.7  christos 
    628   1.1.1.7  christos /*******************************************************************************
    629   1.1.1.7  christos  *
    630   1.1.1.7  christos  * AcpiRsConvertPinConfig
    631   1.1.1.7  christos  *
    632   1.1.1.7  christos  ******************************************************************************/
    633   1.1.1.7  christos 
    634   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinConfig[14] =
    635   1.1.1.7  christos {
    636   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_CONFIG,
    637   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_CONFIG),
    638   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinConfig)},
    639   1.1.1.7  christos 
    640   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_CONFIG,
    641   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_CONFIG),
    642   1.1.1.7  christos                         0},
    643   1.1.1.7  christos 
    644   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.RevisionId),
    645   1.1.1.7  christos                         AML_OFFSET (PinConfig.RevisionId),
    646   1.1.1.7  christos                         1},
    647   1.1.1.7  christos 
    648   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
    649   1.1.1.7  christos                         AML_OFFSET (PinConfig.Flags),
    650   1.1.1.7  christos                         0},
    651   1.1.1.7  christos 
    652   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.ProducerConsumer),
    653   1.1.1.7  christos                         AML_OFFSET (PinConfig.Flags),
    654   1.1.1.7  christos                         1},
    655   1.1.1.7  christos 
    656   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.PinConfigType),
    657   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinConfigType),
    658   1.1.1.7  christos                         1},
    659   1.1.1.7  christos 
    660   1.1.1.7  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.PinConfig.PinConfigValue),
    661   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinConfigValue),
    662   1.1.1.7  christos                         1},
    663   1.1.1.7  christos 
    664   1.1.1.7  christos     /* Pin Table */
    665   1.1.1.7  christos 
    666   1.1.1.7  christos     /*
    667   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    668   1.1.1.7  christos      * structures directly but instead use offsets given here.
    669   1.1.1.7  christos      */
    670   1.1.1.7  christos 
    671   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTableLength),
    672   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinTableOffset),
    673   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset)},
    674   1.1.1.7  christos 
    675   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTable),
    676   1.1.1.7  christos                         AML_OFFSET (PinConfig.PinTableOffset),
    677   1.1.1.7  christos                         0},
    678   1.1.1.7  christos 
    679   1.1.1.7  christos     /* Resource Source */
    680   1.1.1.7  christos 
    681   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.Index),
    682   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceIndex),
    683   1.1.1.7  christos                         1},
    684   1.1.1.7  christos 
    685   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringLength),
    686   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset),
    687   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorOffset)},
    688   1.1.1.7  christos 
    689   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringPtr),
    690   1.1.1.7  christos                         AML_OFFSET (PinConfig.ResSourceOffset),
    691   1.1.1.7  christos                         0},
    692   1.1.1.7  christos 
    693   1.1.1.7  christos     /* Vendor Data */
    694   1.1.1.7  christos 
    695   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinConfig.VendorLength),
    696   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorLength),
    697   1.1.1.7  christos                         1},
    698   1.1.1.7  christos 
    699   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinConfig.VendorData),
    700   1.1.1.7  christos                         AML_OFFSET (PinConfig.VendorOffset),
    701   1.1.1.7  christos                         0},
    702   1.1.1.7  christos };
    703   1.1.1.7  christos 
    704   1.1.1.7  christos /*******************************************************************************
    705   1.1.1.7  christos  *
    706   1.1.1.7  christos  * AcpiRsConvertPinGroup
    707   1.1.1.7  christos  *
    708   1.1.1.7  christos  ******************************************************************************/
    709   1.1.1.7  christos 
    710   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroup[10] =
    711   1.1.1.7  christos {
    712   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP,
    713   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP),
    714   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroup)},
    715   1.1.1.7  christos 
    716   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP,
    717   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP),
    718   1.1.1.7  christos                         0},
    719   1.1.1.7  christos 
    720   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroup.RevisionId),
    721   1.1.1.7  christos                         AML_OFFSET (PinGroup.RevisionId),
    722   1.1.1.7  christos                         1},
    723   1.1.1.7  christos 
    724   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroup.ProducerConsumer),
    725   1.1.1.7  christos                         AML_OFFSET (PinGroup.Flags),
    726   1.1.1.7  christos                         0},
    727   1.1.1.7  christos 
    728   1.1.1.7  christos     /* Pin Table */
    729   1.1.1.7  christos 
    730   1.1.1.7  christos     /*
    731   1.1.1.7  christos      * It is OK to use GPIO operations here because none of them refer GPIO
    732   1.1.1.7  christos      * structures directly but instead use offsets given here.
    733   1.1.1.7  christos      */
    734   1.1.1.7  christos 
    735   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTableLength),
    736   1.1.1.7  christos                         AML_OFFSET (PinGroup.PinTableOffset),
    737   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset)},
    738   1.1.1.7  christos 
    739   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTable),
    740   1.1.1.7  christos                         AML_OFFSET (PinGroup.PinTableOffset),
    741   1.1.1.7  christos                         0},
    742   1.1.1.7  christos 
    743   1.1.1.7  christos     /* Resource Label */
    744   1.1.1.7  christos 
    745   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringLength),
    746   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset),
    747   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorOffset)},
    748   1.1.1.7  christos 
    749   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringPtr),
    750   1.1.1.7  christos                         AML_OFFSET (PinGroup.LabelOffset),
    751   1.1.1.7  christos                         0},
    752   1.1.1.7  christos 
    753   1.1.1.7  christos     /* Vendor Data */
    754   1.1.1.7  christos 
    755   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroup.VendorLength),
    756   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorLength),
    757   1.1.1.7  christos                         1},
    758   1.1.1.7  christos 
    759   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroup.VendorData),
    760   1.1.1.7  christos                         AML_OFFSET (PinGroup.VendorOffset),
    761   1.1.1.7  christos                         0},
    762   1.1.1.7  christos };
    763   1.1.1.7  christos 
    764   1.1.1.7  christos /*******************************************************************************
    765   1.1.1.7  christos  *
    766   1.1.1.7  christos  * AcpiRsConvertPinGroupFunction
    767   1.1.1.7  christos  *
    768   1.1.1.7  christos  ******************************************************************************/
    769   1.1.1.7  christos 
    770   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupFunction[13] =
    771   1.1.1.7  christos {
    772   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION,
    773   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_FUNCTION),
    774   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroupFunction)},
    775   1.1.1.7  christos 
    776   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
    777   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP_FUNCTION),
    778   1.1.1.7  christos                         0},
    779   1.1.1.7  christos 
    780   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupFunction.RevisionId),
    781   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.RevisionId),
    782   1.1.1.7  christos                         1},
    783   1.1.1.7  christos 
    784   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
    785   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.Flags),
    786   1.1.1.7  christos                         0},
    787   1.1.1.7  christos 
    788   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.ProducerConsumer),
    789   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.Flags),
    790   1.1.1.7  christos                         1},
    791   1.1.1.7  christos 
    792   1.1.1.7  christos     {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.PinGroupFunction.FunctionNumber),
    793   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.FunctionNumber),
    794   1.1.1.7  christos                         1},
    795   1.1.1.7  christos 
    796   1.1.1.7  christos     /* Resource Source */
    797   1.1.1.7  christos 
    798   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.Index),
    799   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceIndex),
    800   1.1.1.7  christos                         1},
    801   1.1.1.7  christos 
    802   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringLength),
    803   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceOffset),
    804   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset)},
    805   1.1.1.7  christos 
    806   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringPtr),
    807   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceOffset),
    808   1.1.1.7  christos                         0},
    809   1.1.1.7  christos 
    810   1.1.1.7  christos     /* Resource Source Label */
    811   1.1.1.7  christos 
    812   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringLength),
    813   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
    814   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorOffset)},
    815   1.1.1.7  christos 
    816   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringPtr),
    817   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
    818   1.1.1.7  christos                         0},
    819   1.1.1.7  christos 
    820   1.1.1.7  christos     /* Vendor Data */
    821   1.1.1.7  christos 
    822   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroupFunction.VendorLength),
    823   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorLength),
    824   1.1.1.7  christos                         1},
    825   1.1.1.7  christos 
    826   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupFunction.VendorData),
    827   1.1.1.7  christos                         AML_OFFSET (PinGroupFunction.VendorOffset),
    828   1.1.1.7  christos                         0},
    829   1.1.1.7  christos };
    830   1.1.1.7  christos 
    831   1.1.1.7  christos /*******************************************************************************
    832   1.1.1.7  christos  *
    833   1.1.1.7  christos  * AcpiRsConvertPinGroupConfig
    834   1.1.1.7  christos  *
    835   1.1.1.7  christos  ******************************************************************************/
    836   1.1.1.7  christos 
    837   1.1.1.7  christos ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupConfig[14] =
    838   1.1.1.7  christos {
    839   1.1.1.7  christos     {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG,
    840   1.1.1.7  christos                         ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_CONFIG),
    841   1.1.1.7  christos                         ACPI_RSC_TABLE_SIZE (AcpiRsConvertPinGroupConfig)},
    842   1.1.1.7  christos 
    843   1.1.1.7  christos     {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
    844   1.1.1.7  christos                         sizeof (AML_RESOURCE_PIN_GROUP_CONFIG),
    845   1.1.1.7  christos                         0},
    846   1.1.1.7  christos 
    847   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.RevisionId),
    848   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.RevisionId),
    849   1.1.1.7  christos                         1},
    850   1.1.1.7  christos 
    851   1.1.1.9  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
    852   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.Flags),
    853   1.1.1.7  christos                         0},
    854   1.1.1.7  christos 
    855   1.1.1.7  christos     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.ProducerConsumer),
    856   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.Flags),
    857   1.1.1.7  christos                         1},
    858   1.1.1.7  christos 
    859   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigType),
    860   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.PinConfigType),
    861   1.1.1.7  christos                         1},
    862   1.1.1.7  christos 
    863   1.1.1.7  christos     {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigValue),
    864   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.PinConfigValue),
    865   1.1.1.7  christos                         1},
    866   1.1.1.7  christos 
    867   1.1.1.7  christos     /* Resource Source */
    868   1.1.1.7  christos 
    869   1.1.1.7  christos     {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.Index),
    870   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceIndex),
    871   1.1.1.7  christos                         1},
    872   1.1.1.7  christos 
    873   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringLength),
    874   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceOffset),
    875   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset)},
    876   1.1.1.7  christos 
    877   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringPtr),
    878   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceOffset),
    879   1.1.1.7  christos                         0},
    880   1.1.1.7  christos 
    881   1.1.1.7  christos     /* Resource Source Label */
    882   1.1.1.7  christos 
    883   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_RES,  ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringLength),
    884   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
    885   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorOffset)},
    886   1.1.1.7  christos 
    887   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringPtr),
    888   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
    889   1.1.1.7  christos                         0},
    890   1.1.1.7  christos 
    891   1.1.1.7  christos     /* Vendor Data */
    892   1.1.1.7  christos 
    893   1.1.1.7  christos     {ACPI_RSC_COUNT_GPIO_VEN,   ACPI_RS_OFFSET (Data.PinGroupConfig.VendorLength),
    894   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorLength),
    895   1.1.1.7  christos                         1},
    896   1.1.1.7  christos 
    897   1.1.1.7  christos     {ACPI_RSC_MOVE_GPIO_RES,   ACPI_RS_OFFSET (Data.PinGroupConfig.VendorData),
    898   1.1.1.7  christos                         AML_OFFSET (PinGroupConfig.VendorOffset),
    899   1.1.1.7  christos                         0},
    900   1.1.1.7  christos };
    901