1*4882a593Smuzhiyun // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 2*4882a593Smuzhiyun /******************************************************************************* 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Module Name: rsserial - GPIO/serial_bus resource descriptors 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun ******************************************************************************/ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <acpi/acpi.h> 9*4882a593Smuzhiyun #include "accommon.h" 10*4882a593Smuzhiyun #include "acresrc.h" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define _COMPONENT ACPI_RESOURCES 13*4882a593Smuzhiyun ACPI_MODULE_NAME("rsserial") 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /******************************************************************************* 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun * acpi_rs_convert_gpio 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun ******************************************************************************/ 20*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_gpio[18] = { 21*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GPIO, 22*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_gpio), 23*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_gpio)}, 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GPIO, 26*4882a593Smuzhiyun sizeof(struct aml_resource_gpio), 27*4882a593Smuzhiyun 0}, 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* 30*4882a593Smuzhiyun * These fields are contiguous in both the source and destination: 31*4882a593Smuzhiyun * revision_id 32*4882a593Smuzhiyun * connection_type 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.revision_id), 35*4882a593Smuzhiyun AML_OFFSET(gpio.revision_id), 36*4882a593Smuzhiyun 2}, 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.producer_consumer), 39*4882a593Smuzhiyun AML_OFFSET(gpio.flags), 40*4882a593Smuzhiyun 0}, 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.shareable), 43*4882a593Smuzhiyun AML_OFFSET(gpio.int_flags), 44*4882a593Smuzhiyun 3}, 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.wake_capable), 47*4882a593Smuzhiyun AML_OFFSET(gpio.int_flags), 48*4882a593Smuzhiyun 4}, 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.io_restriction), 51*4882a593Smuzhiyun AML_OFFSET(gpio.int_flags), 52*4882a593Smuzhiyun 0}, 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.triggering), 55*4882a593Smuzhiyun AML_OFFSET(gpio.int_flags), 56*4882a593Smuzhiyun 0}, 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.polarity), 59*4882a593Smuzhiyun AML_OFFSET(gpio.int_flags), 60*4882a593Smuzhiyun 1}, 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.pin_config), 63*4882a593Smuzhiyun AML_OFFSET(gpio.pin_config), 64*4882a593Smuzhiyun 1}, 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /* 67*4882a593Smuzhiyun * These fields are contiguous in both the source and destination: 68*4882a593Smuzhiyun * drive_strength 69*4882a593Smuzhiyun * debounce_timeout 70*4882a593Smuzhiyun */ 71*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.gpio.drive_strength), 72*4882a593Smuzhiyun AML_OFFSET(gpio.drive_strength), 73*4882a593Smuzhiyun 2}, 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun /* Pin Table */ 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table_length), 78*4882a593Smuzhiyun AML_OFFSET(gpio.pin_table_offset), 79*4882a593Smuzhiyun AML_OFFSET(gpio.res_source_offset)}, 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table), 82*4882a593Smuzhiyun AML_OFFSET(gpio.pin_table_offset), 83*4882a593Smuzhiyun 0}, 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* Resource Source */ 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.resource_source.index), 88*4882a593Smuzhiyun AML_OFFSET(gpio.res_source_index), 89*4882a593Smuzhiyun 1}, 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 92*4882a593Smuzhiyun ACPI_RS_OFFSET(data.gpio.resource_source.string_length), 93*4882a593Smuzhiyun AML_OFFSET(gpio.res_source_offset), 94*4882a593Smuzhiyun AML_OFFSET(gpio.vendor_offset)}, 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 97*4882a593Smuzhiyun ACPI_RS_OFFSET(data.gpio.resource_source.string_ptr), 98*4882a593Smuzhiyun AML_OFFSET(gpio.res_source_offset), 99*4882a593Smuzhiyun 0}, 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun /* Vendor Data */ 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.gpio.vendor_length), 104*4882a593Smuzhiyun AML_OFFSET(gpio.vendor_length), 105*4882a593Smuzhiyun 1}, 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.gpio.vendor_data), 108*4882a593Smuzhiyun AML_OFFSET(gpio.vendor_offset), 109*4882a593Smuzhiyun 0}, 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /******************************************************************************* 113*4882a593Smuzhiyun * 114*4882a593Smuzhiyun * acpi_rs_convert_pinfunction 115*4882a593Smuzhiyun * 116*4882a593Smuzhiyun ******************************************************************************/ 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_function[13] = { 119*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_FUNCTION, 120*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_pin_function), 121*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_function)}, 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_FUNCTION, 124*4882a593Smuzhiyun sizeof(struct aml_resource_pin_function), 125*4882a593Smuzhiyun 0}, 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.revision_id), 128*4882a593Smuzhiyun AML_OFFSET(pin_function.revision_id), 129*4882a593Smuzhiyun 1}, 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_function.shareable), 132*4882a593Smuzhiyun AML_OFFSET(pin_function.flags), 133*4882a593Smuzhiyun 0}, 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.pin_config), 136*4882a593Smuzhiyun AML_OFFSET(pin_function.pin_config), 137*4882a593Smuzhiyun 1}, 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.pin_function.function_number), 140*4882a593Smuzhiyun AML_OFFSET(pin_function.function_number), 141*4882a593Smuzhiyun 2}, 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun /* Pin Table */ 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun /* 146*4882a593Smuzhiyun * It is OK to use GPIO operations here because none of them refer GPIO 147*4882a593Smuzhiyun * structures directly but instead use offsets given here. 148*4882a593Smuzhiyun */ 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_PIN, 151*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_function.pin_table_length), 152*4882a593Smuzhiyun AML_OFFSET(pin_function.pin_table_offset), 153*4882a593Smuzhiyun AML_OFFSET(pin_function.res_source_offset)}, 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_function.pin_table), 156*4882a593Smuzhiyun AML_OFFSET(pin_function.pin_table_offset), 157*4882a593Smuzhiyun 0}, 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* Resource Source */ 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 162*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_function.resource_source.index), 163*4882a593Smuzhiyun AML_OFFSET(pin_function.res_source_index), 164*4882a593Smuzhiyun 1}, 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 167*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_function.resource_source.string_length), 168*4882a593Smuzhiyun AML_OFFSET(pin_function.res_source_offset), 169*4882a593Smuzhiyun AML_OFFSET(pin_function.vendor_offset)}, 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 172*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_function.resource_source.string_ptr), 173*4882a593Smuzhiyun AML_OFFSET(pin_function.res_source_offset), 174*4882a593Smuzhiyun 0}, 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun /* Vendor Data */ 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, 179*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_function.vendor_length), 180*4882a593Smuzhiyun AML_OFFSET(pin_function.vendor_length), 181*4882a593Smuzhiyun 1}, 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_function.vendor_data), 184*4882a593Smuzhiyun AML_OFFSET(pin_function.vendor_offset), 185*4882a593Smuzhiyun 0}, 186*4882a593Smuzhiyun }; 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun /******************************************************************************* 189*4882a593Smuzhiyun * 190*4882a593Smuzhiyun * acpi_rs_convert_i2c_serial_bus 191*4882a593Smuzhiyun * 192*4882a593Smuzhiyun ******************************************************************************/ 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[17] = { 195*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, 196*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus), 197*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus)}, 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, 200*4882a593Smuzhiyun sizeof(struct aml_resource_i2c_serialbus), 201*4882a593Smuzhiyun 0}, 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id), 204*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.revision_id), 205*4882a593Smuzhiyun 1}, 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type), 208*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type), 209*4882a593Smuzhiyun 1}, 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode), 212*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 213*4882a593Smuzhiyun 0}, 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 216*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer), 217*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 218*4882a593Smuzhiyun 1}, 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 221*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing), 222*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 223*4882a593Smuzhiyun 2}, 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 226*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id), 227*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_revision_id), 228*4882a593Smuzhiyun 1}, 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun {ACPI_RSC_MOVE16, 231*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_data_length), 232*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 233*4882a593Smuzhiyun 1}, 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun /* Vendor data */ 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_VEN, 238*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_length), 239*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 240*4882a593Smuzhiyun AML_RESOURCE_I2C_MIN_DATA_LEN}, 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_VEN, 243*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_data), 244*4882a593Smuzhiyun 0, 245*4882a593Smuzhiyun sizeof(struct aml_resource_i2c_serialbus)}, 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun /* Resource Source */ 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 250*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index), 251*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.res_source_index), 252*4882a593Smuzhiyun 1}, 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_RES, 255*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length), 256*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 257*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_RES, 260*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr), 261*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 262*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /* I2C bus type specific */ 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode), 267*4882a593Smuzhiyun AML_OFFSET(i2c_serial_bus.type_specific_flags), 268*4882a593Smuzhiyun 0}, 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed), 271*4882a593Smuzhiyun AML_OFFSET(i2c_serial_bus.connection_speed), 272*4882a593Smuzhiyun 1}, 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address), 275*4882a593Smuzhiyun AML_OFFSET(i2c_serial_bus.slave_address), 276*4882a593Smuzhiyun 1}, 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun /******************************************************************************* 280*4882a593Smuzhiyun * 281*4882a593Smuzhiyun * acpi_rs_convert_spi_serial_bus 282*4882a593Smuzhiyun * 283*4882a593Smuzhiyun ******************************************************************************/ 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[21] = { 286*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, 287*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_spi_serialbus), 288*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus)}, 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, 291*4882a593Smuzhiyun sizeof(struct aml_resource_spi_serialbus), 292*4882a593Smuzhiyun 0}, 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id), 295*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.revision_id), 296*4882a593Smuzhiyun 1}, 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type), 299*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type), 300*4882a593Smuzhiyun 1}, 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode), 303*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 304*4882a593Smuzhiyun 0}, 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 307*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer), 308*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 309*4882a593Smuzhiyun 1}, 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 312*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing), 313*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 314*4882a593Smuzhiyun 2}, 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 317*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id), 318*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_revision_id), 319*4882a593Smuzhiyun 1}, 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun {ACPI_RSC_MOVE16, 322*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_data_length), 323*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 324*4882a593Smuzhiyun 1}, 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun /* Vendor data */ 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_VEN, 329*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_length), 330*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 331*4882a593Smuzhiyun AML_RESOURCE_SPI_MIN_DATA_LEN}, 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_VEN, 334*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_data), 335*4882a593Smuzhiyun 0, 336*4882a593Smuzhiyun sizeof(struct aml_resource_spi_serialbus)}, 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun /* Resource Source */ 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 341*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index), 342*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.res_source_index), 343*4882a593Smuzhiyun 1}, 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_RES, 346*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length), 347*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 348*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_RES, 351*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr), 352*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 353*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun /* Spi bus type specific */ 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode), 358*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.type_specific_flags), 359*4882a593Smuzhiyun 0}, 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity), 362*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.type_specific_flags), 363*4882a593Smuzhiyun 1}, 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length), 366*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.data_bit_length), 367*4882a593Smuzhiyun 1}, 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase), 370*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.clock_phase), 371*4882a593Smuzhiyun 1}, 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity), 374*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.clock_polarity), 375*4882a593Smuzhiyun 1}, 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection), 378*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.device_selection), 379*4882a593Smuzhiyun 1}, 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed), 382*4882a593Smuzhiyun AML_OFFSET(spi_serial_bus.connection_speed), 383*4882a593Smuzhiyun 1}, 384*4882a593Smuzhiyun }; 385*4882a593Smuzhiyun 386*4882a593Smuzhiyun /******************************************************************************* 387*4882a593Smuzhiyun * 388*4882a593Smuzhiyun * acpi_rs_convert_uart_serial_bus 389*4882a593Smuzhiyun * 390*4882a593Smuzhiyun ******************************************************************************/ 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[23] = { 393*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, 394*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_uart_serialbus), 395*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus)}, 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, 398*4882a593Smuzhiyun sizeof(struct aml_resource_uart_serialbus), 399*4882a593Smuzhiyun 0}, 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id), 402*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.revision_id), 403*4882a593Smuzhiyun 1}, 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type), 406*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type), 407*4882a593Smuzhiyun 1}, 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode), 410*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 411*4882a593Smuzhiyun 0}, 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 414*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer), 415*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 416*4882a593Smuzhiyun 1}, 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 419*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing), 420*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.flags), 421*4882a593Smuzhiyun 2}, 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 424*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id), 425*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_revision_id), 426*4882a593Smuzhiyun 1}, 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun {ACPI_RSC_MOVE16, 429*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.type_data_length), 430*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 431*4882a593Smuzhiyun 1}, 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun /* Vendor data */ 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_VEN, 436*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_length), 437*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 438*4882a593Smuzhiyun AML_RESOURCE_UART_MIN_DATA_LEN}, 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_VEN, 441*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.vendor_data), 442*4882a593Smuzhiyun 0, 443*4882a593Smuzhiyun sizeof(struct aml_resource_uart_serialbus)}, 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun /* Resource Source */ 446*4882a593Smuzhiyun 447*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 448*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index), 449*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.res_source_index), 450*4882a593Smuzhiyun 1}, 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun {ACPI_RSC_COUNT_SERIAL_RES, 453*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length), 454*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 455*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun {ACPI_RSC_MOVE_SERIAL_RES, 458*4882a593Smuzhiyun ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr), 459*4882a593Smuzhiyun AML_OFFSET(common_serial_bus.type_data_length), 460*4882a593Smuzhiyun sizeof(struct aml_resource_common_serialbus)}, 461*4882a593Smuzhiyun 462*4882a593Smuzhiyun /* Uart bus type specific */ 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control), 465*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.type_specific_flags), 466*4882a593Smuzhiyun 0}, 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits), 469*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.type_specific_flags), 470*4882a593Smuzhiyun 2}, 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits), 473*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.type_specific_flags), 474*4882a593Smuzhiyun 4}, 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian), 477*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.type_specific_flags), 478*4882a593Smuzhiyun 7}, 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity), 481*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.parity), 482*4882a593Smuzhiyun 1}, 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled), 485*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.lines_enabled), 486*4882a593Smuzhiyun 1}, 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size), 489*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.rx_fifo_size), 490*4882a593Smuzhiyun 1}, 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size), 493*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.tx_fifo_size), 494*4882a593Smuzhiyun 1}, 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun {ACPI_RSC_MOVE32, 497*4882a593Smuzhiyun ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate), 498*4882a593Smuzhiyun AML_OFFSET(uart_serial_bus.default_baud_rate), 499*4882a593Smuzhiyun 1}, 500*4882a593Smuzhiyun }; 501*4882a593Smuzhiyun 502*4882a593Smuzhiyun /******************************************************************************* 503*4882a593Smuzhiyun * 504*4882a593Smuzhiyun * acpi_rs_convert_pin_config 505*4882a593Smuzhiyun * 506*4882a593Smuzhiyun ******************************************************************************/ 507*4882a593Smuzhiyun 508*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_config[14] = { 509*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_CONFIG, 510*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_pin_config), 511*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_config)}, 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG, 514*4882a593Smuzhiyun sizeof(struct aml_resource_pin_config), 515*4882a593Smuzhiyun 0}, 516*4882a593Smuzhiyun 517*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id), 518*4882a593Smuzhiyun AML_OFFSET(pin_config.revision_id), 519*4882a593Smuzhiyun 1}, 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable), 522*4882a593Smuzhiyun AML_OFFSET(pin_config.flags), 523*4882a593Smuzhiyun 0}, 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer), 526*4882a593Smuzhiyun AML_OFFSET(pin_config.flags), 527*4882a593Smuzhiyun 1}, 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type), 530*4882a593Smuzhiyun AML_OFFSET(pin_config.pin_config_type), 531*4882a593Smuzhiyun 1}, 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value), 534*4882a593Smuzhiyun AML_OFFSET(pin_config.pin_config_value), 535*4882a593Smuzhiyun 1}, 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun /* Pin Table */ 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun /* 540*4882a593Smuzhiyun * It is OK to use GPIO operations here because none of them refer GPIO 541*4882a593Smuzhiyun * structures directly but instead use offsets given here. 542*4882a593Smuzhiyun */ 543*4882a593Smuzhiyun 544*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_PIN, 545*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_config.pin_table_length), 546*4882a593Smuzhiyun AML_OFFSET(pin_config.pin_table_offset), 547*4882a593Smuzhiyun AML_OFFSET(pin_config.res_source_offset)}, 548*4882a593Smuzhiyun 549*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table), 550*4882a593Smuzhiyun AML_OFFSET(pin_config.pin_table_offset), 551*4882a593Smuzhiyun 0}, 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun /* Resource Source */ 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index), 556*4882a593Smuzhiyun AML_OFFSET(pin_config.res_source_index), 557*4882a593Smuzhiyun 1}, 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 560*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_config.resource_source.string_length), 561*4882a593Smuzhiyun AML_OFFSET(pin_config.res_source_offset), 562*4882a593Smuzhiyun AML_OFFSET(pin_config.vendor_offset)}, 563*4882a593Smuzhiyun 564*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 565*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_config.resource_source.string_ptr), 566*4882a593Smuzhiyun AML_OFFSET(pin_config.res_source_offset), 567*4882a593Smuzhiyun 0}, 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun /* Vendor Data */ 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length), 572*4882a593Smuzhiyun AML_OFFSET(pin_config.vendor_length), 573*4882a593Smuzhiyun 1}, 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data), 576*4882a593Smuzhiyun AML_OFFSET(pin_config.vendor_offset), 577*4882a593Smuzhiyun 0}, 578*4882a593Smuzhiyun }; 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun /******************************************************************************* 581*4882a593Smuzhiyun * 582*4882a593Smuzhiyun * acpi_rs_convert_pin_group 583*4882a593Smuzhiyun * 584*4882a593Smuzhiyun ******************************************************************************/ 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group[10] = { 587*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP, 588*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_pin_group), 589*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group)}, 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP, 592*4882a593Smuzhiyun sizeof(struct aml_resource_pin_group), 593*4882a593Smuzhiyun 0}, 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id), 596*4882a593Smuzhiyun AML_OFFSET(pin_group.revision_id), 597*4882a593Smuzhiyun 1}, 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer), 600*4882a593Smuzhiyun AML_OFFSET(pin_group.flags), 601*4882a593Smuzhiyun 0}, 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun /* Pin Table */ 604*4882a593Smuzhiyun 605*4882a593Smuzhiyun /* 606*4882a593Smuzhiyun * It is OK to use GPIO operations here because none of them refer GPIO 607*4882a593Smuzhiyun * structures directly but instead use offsets given here. 608*4882a593Smuzhiyun */ 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_PIN, 611*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group.pin_table_length), 612*4882a593Smuzhiyun AML_OFFSET(pin_group.pin_table_offset), 613*4882a593Smuzhiyun AML_OFFSET(pin_group.label_offset)}, 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table), 616*4882a593Smuzhiyun AML_OFFSET(pin_group.pin_table_offset), 617*4882a593Smuzhiyun 0}, 618*4882a593Smuzhiyun 619*4882a593Smuzhiyun /* Resource Label */ 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 622*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group.resource_label.string_length), 623*4882a593Smuzhiyun AML_OFFSET(pin_group.label_offset), 624*4882a593Smuzhiyun AML_OFFSET(pin_group.vendor_offset)}, 625*4882a593Smuzhiyun 626*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 627*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr), 628*4882a593Smuzhiyun AML_OFFSET(pin_group.label_offset), 629*4882a593Smuzhiyun 0}, 630*4882a593Smuzhiyun 631*4882a593Smuzhiyun /* Vendor Data */ 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length), 634*4882a593Smuzhiyun AML_OFFSET(pin_group.vendor_length), 635*4882a593Smuzhiyun 1}, 636*4882a593Smuzhiyun 637*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data), 638*4882a593Smuzhiyun AML_OFFSET(pin_group.vendor_offset), 639*4882a593Smuzhiyun 0}, 640*4882a593Smuzhiyun }; 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun /******************************************************************************* 643*4882a593Smuzhiyun * 644*4882a593Smuzhiyun * acpi_rs_convert_pin_group_function 645*4882a593Smuzhiyun * 646*4882a593Smuzhiyun ******************************************************************************/ 647*4882a593Smuzhiyun 648*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group_function[13] = { 649*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION, 650*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_pin_group_function), 651*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_function)}, 652*4882a593Smuzhiyun 653*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION, 654*4882a593Smuzhiyun sizeof(struct aml_resource_pin_group_function), 655*4882a593Smuzhiyun 0}, 656*4882a593Smuzhiyun 657*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id), 658*4882a593Smuzhiyun AML_OFFSET(pin_group_function.revision_id), 659*4882a593Smuzhiyun 1}, 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable), 662*4882a593Smuzhiyun AML_OFFSET(pin_group_function.flags), 663*4882a593Smuzhiyun 0}, 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 666*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.producer_consumer), 667*4882a593Smuzhiyun AML_OFFSET(pin_group_function.flags), 668*4882a593Smuzhiyun 1}, 669*4882a593Smuzhiyun 670*4882a593Smuzhiyun {ACPI_RSC_MOVE16, 671*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.function_number), 672*4882a593Smuzhiyun AML_OFFSET(pin_group_function.function_number), 673*4882a593Smuzhiyun 1}, 674*4882a593Smuzhiyun 675*4882a593Smuzhiyun /* Resource Source */ 676*4882a593Smuzhiyun 677*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 678*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.resource_source.index), 679*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_index), 680*4882a593Smuzhiyun 1}, 681*4882a593Smuzhiyun 682*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 683*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_length), 684*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_offset), 685*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_label_offset)}, 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 688*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_ptr), 689*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_offset), 690*4882a593Smuzhiyun 0}, 691*4882a593Smuzhiyun 692*4882a593Smuzhiyun /* Resource Source Label */ 693*4882a593Smuzhiyun 694*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 695*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.resource_source_label. 696*4882a593Smuzhiyun string_length), 697*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_label_offset), 698*4882a593Smuzhiyun AML_OFFSET(pin_group_function.vendor_offset)}, 699*4882a593Smuzhiyun 700*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 701*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.resource_source_label. 702*4882a593Smuzhiyun string_ptr), 703*4882a593Smuzhiyun AML_OFFSET(pin_group_function.res_source_label_offset), 704*4882a593Smuzhiyun 0}, 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun /* Vendor Data */ 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, 709*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.vendor_length), 710*4882a593Smuzhiyun AML_OFFSET(pin_group_function.vendor_length), 711*4882a593Smuzhiyun 1}, 712*4882a593Smuzhiyun 713*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 714*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_function.vendor_data), 715*4882a593Smuzhiyun AML_OFFSET(pin_group_function.vendor_offset), 716*4882a593Smuzhiyun 0}, 717*4882a593Smuzhiyun }; 718*4882a593Smuzhiyun 719*4882a593Smuzhiyun /******************************************************************************* 720*4882a593Smuzhiyun * 721*4882a593Smuzhiyun * acpi_rs_convert_pin_group_config 722*4882a593Smuzhiyun * 723*4882a593Smuzhiyun ******************************************************************************/ 724*4882a593Smuzhiyun 725*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group_config[14] = { 726*4882a593Smuzhiyun {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG, 727*4882a593Smuzhiyun ACPI_RS_SIZE(struct acpi_resource_pin_group_config), 728*4882a593Smuzhiyun ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_config)}, 729*4882a593Smuzhiyun 730*4882a593Smuzhiyun {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG, 731*4882a593Smuzhiyun sizeof(struct aml_resource_pin_group_config), 732*4882a593Smuzhiyun 0}, 733*4882a593Smuzhiyun 734*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id), 735*4882a593Smuzhiyun AML_OFFSET(pin_group_config.revision_id), 736*4882a593Smuzhiyun 1}, 737*4882a593Smuzhiyun 738*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable), 739*4882a593Smuzhiyun AML_OFFSET(pin_group_config.flags), 740*4882a593Smuzhiyun 0}, 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun {ACPI_RSC_1BITFLAG, 743*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.producer_consumer), 744*4882a593Smuzhiyun AML_OFFSET(pin_group_config.flags), 745*4882a593Smuzhiyun 1}, 746*4882a593Smuzhiyun 747*4882a593Smuzhiyun {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type), 748*4882a593Smuzhiyun AML_OFFSET(pin_group_config.pin_config_type), 749*4882a593Smuzhiyun 1}, 750*4882a593Smuzhiyun 751*4882a593Smuzhiyun {ACPI_RSC_MOVE32, 752*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.pin_config_value), 753*4882a593Smuzhiyun AML_OFFSET(pin_group_config.pin_config_value), 754*4882a593Smuzhiyun 1}, 755*4882a593Smuzhiyun 756*4882a593Smuzhiyun /* Resource Source */ 757*4882a593Smuzhiyun 758*4882a593Smuzhiyun {ACPI_RSC_MOVE8, 759*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.resource_source.index), 760*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_index), 761*4882a593Smuzhiyun 1}, 762*4882a593Smuzhiyun 763*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 764*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_length), 765*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_offset), 766*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_label_offset)}, 767*4882a593Smuzhiyun 768*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 769*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_ptr), 770*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_offset), 771*4882a593Smuzhiyun 0}, 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun /* Resource Source Label */ 774*4882a593Smuzhiyun 775*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_RES, 776*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.resource_source_label. 777*4882a593Smuzhiyun string_length), 778*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_label_offset), 779*4882a593Smuzhiyun AML_OFFSET(pin_group_config.vendor_offset)}, 780*4882a593Smuzhiyun 781*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 782*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.string_ptr), 783*4882a593Smuzhiyun AML_OFFSET(pin_group_config.res_source_label_offset), 784*4882a593Smuzhiyun 0}, 785*4882a593Smuzhiyun 786*4882a593Smuzhiyun /* Vendor Data */ 787*4882a593Smuzhiyun 788*4882a593Smuzhiyun {ACPI_RSC_COUNT_GPIO_VEN, 789*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.vendor_length), 790*4882a593Smuzhiyun AML_OFFSET(pin_group_config.vendor_length), 791*4882a593Smuzhiyun 1}, 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun {ACPI_RSC_MOVE_GPIO_RES, 794*4882a593Smuzhiyun ACPI_RS_OFFSET(data.pin_group_config.vendor_data), 795*4882a593Smuzhiyun AML_OFFSET(pin_group_config.vendor_offset), 796*4882a593Smuzhiyun 0}, 797*4882a593Smuzhiyun }; 798