1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
2 /*******************************************************************************
4 * Module Name: rsserial - GPIO/serial_bus resource descriptors
6 ******************************************************************************/
12 #define _COMPONENT ACPI_RESOURCES
13 ACPI_MODULE_NAME("rsserial")
15 /*******************************************************************************
17 * acpi_rs_convert_gpio
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
)},
25 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_GPIO
,
26 sizeof(struct aml_resource_gpio
),
30 * These fields are contiguous in both the source and destination:
34 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.gpio
.revision_id
),
35 AML_OFFSET(gpio
.revision_id
),
38 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.producer_consumer
),
39 AML_OFFSET(gpio
.flags
),
42 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.shareable
),
43 AML_OFFSET(gpio
.int_flags
),
46 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.wake_capable
),
47 AML_OFFSET(gpio
.int_flags
),
50 {ACPI_RSC_2BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.io_restriction
),
51 AML_OFFSET(gpio
.int_flags
),
54 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.triggering
),
55 AML_OFFSET(gpio
.int_flags
),
58 {ACPI_RSC_2BITFLAG
, ACPI_RS_OFFSET(data
.gpio
.polarity
),
59 AML_OFFSET(gpio
.int_flags
),
62 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.gpio
.pin_config
),
63 AML_OFFSET(gpio
.pin_config
),
67 * These fields are contiguous in both the source and destination:
71 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.gpio
.drive_strength
),
72 AML_OFFSET(gpio
.drive_strength
),
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
)},
81 {ACPI_RSC_MOVE_GPIO_PIN
, ACPI_RS_OFFSET(data
.gpio
.pin_table
),
82 AML_OFFSET(gpio
.pin_table_offset
),
87 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.gpio
.resource_source
.index
),
88 AML_OFFSET(gpio
.res_source_index
),
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
)},
96 {ACPI_RSC_MOVE_GPIO_RES
,
97 ACPI_RS_OFFSET(data
.gpio
.resource_source
.string_ptr
),
98 AML_OFFSET(gpio
.res_source_offset
),
103 {ACPI_RSC_COUNT_GPIO_VEN
, ACPI_RS_OFFSET(data
.gpio
.vendor_length
),
104 AML_OFFSET(gpio
.vendor_length
),
107 {ACPI_RSC_MOVE_GPIO_RES
, ACPI_RS_OFFSET(data
.gpio
.vendor_data
),
108 AML_OFFSET(gpio
.vendor_offset
),
112 /*******************************************************************************
114 * acpi_rs_convert_pinfunction
116 ******************************************************************************/
118 struct acpi_rsconvert_info acpi_rs_convert_pin_function
[13] = {
119 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_PIN_FUNCTION
,
120 ACPI_RS_SIZE(struct acpi_resource_pin_function
),
121 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_function
)},
123 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_PIN_FUNCTION
,
124 sizeof(struct aml_resource_pin_function
),
127 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_function
.revision_id
),
128 AML_OFFSET(pin_function
.revision_id
),
131 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_function
.shareable
),
132 AML_OFFSET(pin_function
.flags
),
135 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_function
.pin_config
),
136 AML_OFFSET(pin_function
.pin_config
),
139 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.pin_function
.function_number
),
140 AML_OFFSET(pin_function
.function_number
),
146 * It is OK to use GPIO operations here because none of them refer GPIO
147 * structures directly but instead use offsets given here.
150 {ACPI_RSC_COUNT_GPIO_PIN
,
151 ACPI_RS_OFFSET(data
.pin_function
.pin_table_length
),
152 AML_OFFSET(pin_function
.pin_table_offset
),
153 AML_OFFSET(pin_function
.res_source_offset
)},
155 {ACPI_RSC_MOVE_GPIO_PIN
, ACPI_RS_OFFSET(data
.pin_function
.pin_table
),
156 AML_OFFSET(pin_function
.pin_table_offset
),
159 /* Resource Source */
162 ACPI_RS_OFFSET(data
.pin_function
.resource_source
.index
),
163 AML_OFFSET(pin_function
.res_source_index
),
166 {ACPI_RSC_COUNT_GPIO_RES
,
167 ACPI_RS_OFFSET(data
.pin_function
.resource_source
.string_length
),
168 AML_OFFSET(pin_function
.res_source_offset
),
169 AML_OFFSET(pin_function
.vendor_offset
)},
171 {ACPI_RSC_MOVE_GPIO_RES
,
172 ACPI_RS_OFFSET(data
.pin_function
.resource_source
.string_ptr
),
173 AML_OFFSET(pin_function
.res_source_offset
),
178 {ACPI_RSC_COUNT_GPIO_VEN
,
179 ACPI_RS_OFFSET(data
.pin_function
.vendor_length
),
180 AML_OFFSET(pin_function
.vendor_length
),
183 {ACPI_RSC_MOVE_GPIO_RES
, ACPI_RS_OFFSET(data
.pin_function
.vendor_data
),
184 AML_OFFSET(pin_function
.vendor_offset
),
188 /*******************************************************************************
190 * acpi_rs_convert_i2c_serial_bus
192 ******************************************************************************/
194 struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus
[17] = {
195 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_SERIAL_BUS
,
196 ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus
),
197 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus
)},
199 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_SERIAL_BUS
,
200 sizeof(struct aml_resource_i2c_serialbus
),
203 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.revision_id
),
204 AML_OFFSET(common_serial_bus
.revision_id
),
207 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.type
),
208 AML_OFFSET(common_serial_bus
.type
),
211 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.common_serial_bus
.slave_mode
),
212 AML_OFFSET(common_serial_bus
.flags
),
216 ACPI_RS_OFFSET(data
.common_serial_bus
.producer_consumer
),
217 AML_OFFSET(common_serial_bus
.flags
),
221 ACPI_RS_OFFSET(data
.common_serial_bus
.connection_sharing
),
222 AML_OFFSET(common_serial_bus
.flags
),
226 ACPI_RS_OFFSET(data
.common_serial_bus
.type_revision_id
),
227 AML_OFFSET(common_serial_bus
.type_revision_id
),
231 ACPI_RS_OFFSET(data
.common_serial_bus
.type_data_length
),
232 AML_OFFSET(common_serial_bus
.type_data_length
),
237 {ACPI_RSC_COUNT_SERIAL_VEN
,
238 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_length
),
239 AML_OFFSET(common_serial_bus
.type_data_length
),
240 AML_RESOURCE_I2C_MIN_DATA_LEN
},
242 {ACPI_RSC_MOVE_SERIAL_VEN
,
243 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_data
),
245 sizeof(struct aml_resource_i2c_serialbus
)},
247 /* Resource Source */
250 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.index
),
251 AML_OFFSET(common_serial_bus
.res_source_index
),
254 {ACPI_RSC_COUNT_SERIAL_RES
,
255 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_length
),
256 AML_OFFSET(common_serial_bus
.type_data_length
),
257 sizeof(struct aml_resource_common_serialbus
)},
259 {ACPI_RSC_MOVE_SERIAL_RES
,
260 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_ptr
),
261 AML_OFFSET(common_serial_bus
.type_data_length
),
262 sizeof(struct aml_resource_common_serialbus
)},
264 /* I2C bus type specific */
266 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.i2c_serial_bus
.access_mode
),
267 AML_OFFSET(i2c_serial_bus
.type_specific_flags
),
270 {ACPI_RSC_MOVE32
, ACPI_RS_OFFSET(data
.i2c_serial_bus
.connection_speed
),
271 AML_OFFSET(i2c_serial_bus
.connection_speed
),
274 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.i2c_serial_bus
.slave_address
),
275 AML_OFFSET(i2c_serial_bus
.slave_address
),
279 /*******************************************************************************
281 * acpi_rs_convert_spi_serial_bus
283 ******************************************************************************/
285 struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus
[21] = {
286 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_SERIAL_BUS
,
287 ACPI_RS_SIZE(struct acpi_resource_spi_serialbus
),
288 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus
)},
290 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_SERIAL_BUS
,
291 sizeof(struct aml_resource_spi_serialbus
),
294 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.revision_id
),
295 AML_OFFSET(common_serial_bus
.revision_id
),
298 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.type
),
299 AML_OFFSET(common_serial_bus
.type
),
302 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.common_serial_bus
.slave_mode
),
303 AML_OFFSET(common_serial_bus
.flags
),
307 ACPI_RS_OFFSET(data
.common_serial_bus
.producer_consumer
),
308 AML_OFFSET(common_serial_bus
.flags
),
312 ACPI_RS_OFFSET(data
.common_serial_bus
.connection_sharing
),
313 AML_OFFSET(common_serial_bus
.flags
),
317 ACPI_RS_OFFSET(data
.common_serial_bus
.type_revision_id
),
318 AML_OFFSET(common_serial_bus
.type_revision_id
),
322 ACPI_RS_OFFSET(data
.common_serial_bus
.type_data_length
),
323 AML_OFFSET(common_serial_bus
.type_data_length
),
328 {ACPI_RSC_COUNT_SERIAL_VEN
,
329 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_length
),
330 AML_OFFSET(common_serial_bus
.type_data_length
),
331 AML_RESOURCE_SPI_MIN_DATA_LEN
},
333 {ACPI_RSC_MOVE_SERIAL_VEN
,
334 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_data
),
336 sizeof(struct aml_resource_spi_serialbus
)},
338 /* Resource Source */
341 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.index
),
342 AML_OFFSET(common_serial_bus
.res_source_index
),
345 {ACPI_RSC_COUNT_SERIAL_RES
,
346 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_length
),
347 AML_OFFSET(common_serial_bus
.type_data_length
),
348 sizeof(struct aml_resource_common_serialbus
)},
350 {ACPI_RSC_MOVE_SERIAL_RES
,
351 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_ptr
),
352 AML_OFFSET(common_serial_bus
.type_data_length
),
353 sizeof(struct aml_resource_common_serialbus
)},
355 /* Spi bus type specific */
357 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.spi_serial_bus
.wire_mode
),
358 AML_OFFSET(spi_serial_bus
.type_specific_flags
),
361 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.spi_serial_bus
.device_polarity
),
362 AML_OFFSET(spi_serial_bus
.type_specific_flags
),
365 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.spi_serial_bus
.data_bit_length
),
366 AML_OFFSET(spi_serial_bus
.data_bit_length
),
369 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.spi_serial_bus
.clock_phase
),
370 AML_OFFSET(spi_serial_bus
.clock_phase
),
373 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.spi_serial_bus
.clock_polarity
),
374 AML_OFFSET(spi_serial_bus
.clock_polarity
),
377 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.spi_serial_bus
.device_selection
),
378 AML_OFFSET(spi_serial_bus
.device_selection
),
381 {ACPI_RSC_MOVE32
, ACPI_RS_OFFSET(data
.spi_serial_bus
.connection_speed
),
382 AML_OFFSET(spi_serial_bus
.connection_speed
),
386 /*******************************************************************************
388 * acpi_rs_convert_uart_serial_bus
390 ******************************************************************************/
392 struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus
[23] = {
393 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_SERIAL_BUS
,
394 ACPI_RS_SIZE(struct acpi_resource_uart_serialbus
),
395 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus
)},
397 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_SERIAL_BUS
,
398 sizeof(struct aml_resource_uart_serialbus
),
401 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.revision_id
),
402 AML_OFFSET(common_serial_bus
.revision_id
),
405 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.common_serial_bus
.type
),
406 AML_OFFSET(common_serial_bus
.type
),
409 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.common_serial_bus
.slave_mode
),
410 AML_OFFSET(common_serial_bus
.flags
),
414 ACPI_RS_OFFSET(data
.common_serial_bus
.producer_consumer
),
415 AML_OFFSET(common_serial_bus
.flags
),
419 ACPI_RS_OFFSET(data
.common_serial_bus
.connection_sharing
),
420 AML_OFFSET(common_serial_bus
.flags
),
424 ACPI_RS_OFFSET(data
.common_serial_bus
.type_revision_id
),
425 AML_OFFSET(common_serial_bus
.type_revision_id
),
429 ACPI_RS_OFFSET(data
.common_serial_bus
.type_data_length
),
430 AML_OFFSET(common_serial_bus
.type_data_length
),
435 {ACPI_RSC_COUNT_SERIAL_VEN
,
436 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_length
),
437 AML_OFFSET(common_serial_bus
.type_data_length
),
438 AML_RESOURCE_UART_MIN_DATA_LEN
},
440 {ACPI_RSC_MOVE_SERIAL_VEN
,
441 ACPI_RS_OFFSET(data
.common_serial_bus
.vendor_data
),
443 sizeof(struct aml_resource_uart_serialbus
)},
445 /* Resource Source */
448 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.index
),
449 AML_OFFSET(common_serial_bus
.res_source_index
),
452 {ACPI_RSC_COUNT_SERIAL_RES
,
453 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_length
),
454 AML_OFFSET(common_serial_bus
.type_data_length
),
455 sizeof(struct aml_resource_common_serialbus
)},
457 {ACPI_RSC_MOVE_SERIAL_RES
,
458 ACPI_RS_OFFSET(data
.common_serial_bus
.resource_source
.string_ptr
),
459 AML_OFFSET(common_serial_bus
.type_data_length
),
460 sizeof(struct aml_resource_common_serialbus
)},
462 /* Uart bus type specific */
464 {ACPI_RSC_2BITFLAG
, ACPI_RS_OFFSET(data
.uart_serial_bus
.flow_control
),
465 AML_OFFSET(uart_serial_bus
.type_specific_flags
),
468 {ACPI_RSC_2BITFLAG
, ACPI_RS_OFFSET(data
.uart_serial_bus
.stop_bits
),
469 AML_OFFSET(uart_serial_bus
.type_specific_flags
),
472 {ACPI_RSC_3BITFLAG
, ACPI_RS_OFFSET(data
.uart_serial_bus
.data_bits
),
473 AML_OFFSET(uart_serial_bus
.type_specific_flags
),
476 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.uart_serial_bus
.endian
),
477 AML_OFFSET(uart_serial_bus
.type_specific_flags
),
480 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.uart_serial_bus
.parity
),
481 AML_OFFSET(uart_serial_bus
.parity
),
484 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.uart_serial_bus
.lines_enabled
),
485 AML_OFFSET(uart_serial_bus
.lines_enabled
),
488 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.uart_serial_bus
.rx_fifo_size
),
489 AML_OFFSET(uart_serial_bus
.rx_fifo_size
),
492 {ACPI_RSC_MOVE16
, ACPI_RS_OFFSET(data
.uart_serial_bus
.tx_fifo_size
),
493 AML_OFFSET(uart_serial_bus
.tx_fifo_size
),
497 ACPI_RS_OFFSET(data
.uart_serial_bus
.default_baud_rate
),
498 AML_OFFSET(uart_serial_bus
.default_baud_rate
),
502 /*******************************************************************************
504 * acpi_rs_convert_pin_config
506 ******************************************************************************/
508 struct acpi_rsconvert_info acpi_rs_convert_pin_config
[14] = {
509 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_PIN_CONFIG
,
510 ACPI_RS_SIZE(struct acpi_resource_pin_config
),
511 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_config
)},
513 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_PIN_CONFIG
,
514 sizeof(struct aml_resource_pin_config
),
517 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_config
.revision_id
),
518 AML_OFFSET(pin_config
.revision_id
),
521 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_config
.shareable
),
522 AML_OFFSET(pin_config
.flags
),
525 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_config
.producer_consumer
),
526 AML_OFFSET(pin_config
.flags
),
529 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_config
.pin_config_type
),
530 AML_OFFSET(pin_config
.pin_config_type
),
533 {ACPI_RSC_MOVE32
, ACPI_RS_OFFSET(data
.pin_config
.pin_config_value
),
534 AML_OFFSET(pin_config
.pin_config_value
),
540 * It is OK to use GPIO operations here because none of them refer GPIO
541 * structures directly but instead use offsets given here.
544 {ACPI_RSC_COUNT_GPIO_PIN
,
545 ACPI_RS_OFFSET(data
.pin_config
.pin_table_length
),
546 AML_OFFSET(pin_config
.pin_table_offset
),
547 AML_OFFSET(pin_config
.res_source_offset
)},
549 {ACPI_RSC_MOVE_GPIO_PIN
, ACPI_RS_OFFSET(data
.pin_config
.pin_table
),
550 AML_OFFSET(pin_config
.pin_table_offset
),
553 /* Resource Source */
555 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_config
.resource_source
.index
),
556 AML_OFFSET(pin_config
.res_source_index
),
559 {ACPI_RSC_COUNT_GPIO_RES
,
560 ACPI_RS_OFFSET(data
.pin_config
.resource_source
.string_length
),
561 AML_OFFSET(pin_config
.res_source_offset
),
562 AML_OFFSET(pin_config
.vendor_offset
)},
564 {ACPI_RSC_MOVE_GPIO_RES
,
565 ACPI_RS_OFFSET(data
.pin_config
.resource_source
.string_ptr
),
566 AML_OFFSET(pin_config
.res_source_offset
),
571 {ACPI_RSC_COUNT_GPIO_VEN
, ACPI_RS_OFFSET(data
.pin_config
.vendor_length
),
572 AML_OFFSET(pin_config
.vendor_length
),
575 {ACPI_RSC_MOVE_GPIO_RES
, ACPI_RS_OFFSET(data
.pin_config
.vendor_data
),
576 AML_OFFSET(pin_config
.vendor_offset
),
580 /*******************************************************************************
582 * acpi_rs_convert_pin_group
584 ******************************************************************************/
586 struct acpi_rsconvert_info acpi_rs_convert_pin_group
[10] = {
587 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_PIN_GROUP
,
588 ACPI_RS_SIZE(struct acpi_resource_pin_group
),
589 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group
)},
591 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_PIN_GROUP
,
592 sizeof(struct aml_resource_pin_group
),
595 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_group
.revision_id
),
596 AML_OFFSET(pin_group
.revision_id
),
599 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_group
.producer_consumer
),
600 AML_OFFSET(pin_group
.flags
),
606 * It is OK to use GPIO operations here because none of them refer GPIO
607 * structures directly but instead use offsets given here.
610 {ACPI_RSC_COUNT_GPIO_PIN
,
611 ACPI_RS_OFFSET(data
.pin_group
.pin_table_length
),
612 AML_OFFSET(pin_group
.pin_table_offset
),
613 AML_OFFSET(pin_group
.label_offset
)},
615 {ACPI_RSC_MOVE_GPIO_PIN
, ACPI_RS_OFFSET(data
.pin_group
.pin_table
),
616 AML_OFFSET(pin_group
.pin_table_offset
),
621 {ACPI_RSC_COUNT_GPIO_RES
,
622 ACPI_RS_OFFSET(data
.pin_group
.resource_label
.string_length
),
623 AML_OFFSET(pin_group
.label_offset
),
624 AML_OFFSET(pin_group
.vendor_offset
)},
626 {ACPI_RSC_MOVE_GPIO_RES
,
627 ACPI_RS_OFFSET(data
.pin_group
.resource_label
.string_ptr
),
628 AML_OFFSET(pin_group
.label_offset
),
633 {ACPI_RSC_COUNT_GPIO_VEN
, ACPI_RS_OFFSET(data
.pin_group
.vendor_length
),
634 AML_OFFSET(pin_group
.vendor_length
),
637 {ACPI_RSC_MOVE_GPIO_RES
, ACPI_RS_OFFSET(data
.pin_group
.vendor_data
),
638 AML_OFFSET(pin_group
.vendor_offset
),
642 /*******************************************************************************
644 * acpi_rs_convert_pin_group_function
646 ******************************************************************************/
648 struct acpi_rsconvert_info acpi_rs_convert_pin_group_function
[13] = {
649 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION
,
650 ACPI_RS_SIZE(struct acpi_resource_pin_group_function
),
651 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_function
)},
653 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION
,
654 sizeof(struct aml_resource_pin_group_function
),
657 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_group_function
.revision_id
),
658 AML_OFFSET(pin_group_function
.revision_id
),
661 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_group_function
.shareable
),
662 AML_OFFSET(pin_group_function
.flags
),
666 ACPI_RS_OFFSET(data
.pin_group_function
.producer_consumer
),
667 AML_OFFSET(pin_group_function
.flags
),
671 ACPI_RS_OFFSET(data
.pin_group_function
.function_number
),
672 AML_OFFSET(pin_group_function
.function_number
),
675 /* Resource Source */
678 ACPI_RS_OFFSET(data
.pin_group_function
.resource_source
.index
),
679 AML_OFFSET(pin_group_function
.res_source_index
),
682 {ACPI_RSC_COUNT_GPIO_RES
,
683 ACPI_RS_OFFSET(data
.pin_group_function
.resource_source
.string_length
),
684 AML_OFFSET(pin_group_function
.res_source_offset
),
685 AML_OFFSET(pin_group_function
.res_source_label_offset
)},
687 {ACPI_RSC_MOVE_GPIO_RES
,
688 ACPI_RS_OFFSET(data
.pin_group_function
.resource_source
.string_ptr
),
689 AML_OFFSET(pin_group_function
.res_source_offset
),
692 /* Resource Source Label */
694 {ACPI_RSC_COUNT_GPIO_RES
,
695 ACPI_RS_OFFSET(data
.pin_group_function
.resource_source_label
.
697 AML_OFFSET(pin_group_function
.res_source_label_offset
),
698 AML_OFFSET(pin_group_function
.vendor_offset
)},
700 {ACPI_RSC_MOVE_GPIO_RES
,
701 ACPI_RS_OFFSET(data
.pin_group_function
.resource_source_label
.
703 AML_OFFSET(pin_group_function
.res_source_label_offset
),
708 {ACPI_RSC_COUNT_GPIO_VEN
,
709 ACPI_RS_OFFSET(data
.pin_group_function
.vendor_length
),
710 AML_OFFSET(pin_group_function
.vendor_length
),
713 {ACPI_RSC_MOVE_GPIO_RES
,
714 ACPI_RS_OFFSET(data
.pin_group_function
.vendor_data
),
715 AML_OFFSET(pin_group_function
.vendor_offset
),
719 /*******************************************************************************
721 * acpi_rs_convert_pin_group_config
723 ******************************************************************************/
725 struct acpi_rsconvert_info acpi_rs_convert_pin_group_config
[14] = {
726 {ACPI_RSC_INITGET
, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG
,
727 ACPI_RS_SIZE(struct acpi_resource_pin_group_config
),
728 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_config
)},
730 {ACPI_RSC_INITSET
, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG
,
731 sizeof(struct aml_resource_pin_group_config
),
734 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_group_config
.revision_id
),
735 AML_OFFSET(pin_group_config
.revision_id
),
738 {ACPI_RSC_1BITFLAG
, ACPI_RS_OFFSET(data
.pin_group_config
.shareable
),
739 AML_OFFSET(pin_group_config
.flags
),
743 ACPI_RS_OFFSET(data
.pin_group_config
.producer_consumer
),
744 AML_OFFSET(pin_group_config
.flags
),
747 {ACPI_RSC_MOVE8
, ACPI_RS_OFFSET(data
.pin_group_config
.pin_config_type
),
748 AML_OFFSET(pin_group_config
.pin_config_type
),
752 ACPI_RS_OFFSET(data
.pin_group_config
.pin_config_value
),
753 AML_OFFSET(pin_group_config
.pin_config_value
),
756 /* Resource Source */
759 ACPI_RS_OFFSET(data
.pin_group_config
.resource_source
.index
),
760 AML_OFFSET(pin_group_config
.res_source_index
),
763 {ACPI_RSC_COUNT_GPIO_RES
,
764 ACPI_RS_OFFSET(data
.pin_group_config
.resource_source
.string_length
),
765 AML_OFFSET(pin_group_config
.res_source_offset
),
766 AML_OFFSET(pin_group_config
.res_source_label_offset
)},
768 {ACPI_RSC_MOVE_GPIO_RES
,
769 ACPI_RS_OFFSET(data
.pin_group_config
.resource_source
.string_ptr
),
770 AML_OFFSET(pin_group_config
.res_source_offset
),
773 /* Resource Source Label */
775 {ACPI_RSC_COUNT_GPIO_RES
,
776 ACPI_RS_OFFSET(data
.pin_group_config
.resource_source_label
.
778 AML_OFFSET(pin_group_config
.res_source_label_offset
),
779 AML_OFFSET(pin_group_config
.vendor_offset
)},
781 {ACPI_RSC_MOVE_GPIO_RES
,
782 ACPI_RS_OFFSET(data
.pin_group_config
.resource_source_label
.string_ptr
),
783 AML_OFFSET(pin_group_config
.res_source_label_offset
),
788 {ACPI_RSC_COUNT_GPIO_VEN
,
789 ACPI_RS_OFFSET(data
.pin_group_config
.vendor_length
),
790 AML_OFFSET(pin_group_config
.vendor_length
),
793 {ACPI_RSC_MOVE_GPIO_RES
,
794 ACPI_RS_OFFSET(data
.pin_group_config
.vendor_data
),
795 AML_OFFSET(pin_group_config
.vendor_offset
),