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