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_clock_input
116 ******************************************************************************/
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)},
123 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_CLOCK_INPUT,
124 sizeof(struct aml_resource_clock_input),
128 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.clock_input.revision_id),
129 AML_OFFSET(clock_input.revision_id),
133 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.clock_input.mode),
134 AML_OFFSET(clock_input.flags),
138 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.clock_input.scale),
139 AML_OFFSET(clock_input.flags),
143 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.clock_input.frequency_divisor),
144 AML_OFFSET(clock_input.frequency_divisor),
148 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.clock_input.frequency_numerator),
149 AML_OFFSET(clock_input.frequency_numerator),
153 /* Resource Source */
154 {ACPI_RSC_SOURCE, ACPI_RS_OFFSET(data.clock_input.resource_source),
156 sizeof(struct aml_resource_clock_input)}
161 /*******************************************************************************
163 * acpi_rs_convert_pinfunction
165 ******************************************************************************/
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)},
172 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_FUNCTION,
173 sizeof(struct aml_resource_pin_function),
176 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.revision_id),
177 AML_OFFSET(pin_function.revision_id),
180 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_function.shareable),
181 AML_OFFSET(pin_function.flags),
184 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.pin_config),
185 AML_OFFSET(pin_function.pin_config),
188 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.pin_function.function_number),
189 AML_OFFSET(pin_function.function_number),
195 * It is OK to use GPIO operations here because none of them refer GPIO
196 * structures directly but instead use offsets given here.
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)},
204 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_function.pin_table),
205 AML_OFFSET(pin_function.pin_table_offset),
208 /* Resource Source */
211 ACPI_RS_OFFSET(data.pin_function.resource_source.index),
212 AML_OFFSET(pin_function.res_source_index),
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)},
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),
227 {ACPI_RSC_COUNT_GPIO_VEN,
228 ACPI_RS_OFFSET(data.pin_function.vendor_length),
229 AML_OFFSET(pin_function.vendor_length),
232 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_function.vendor_data),
233 AML_OFFSET(pin_function.vendor_offset),
237 /*******************************************************************************
239 * acpi_rs_convert_csi2_serial_bus
241 ******************************************************************************/
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) },
248 { ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
249 sizeof(struct aml_resource_csi2_serialbus),
252 { ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
253 AML_OFFSET(common_serial_bus.revision_id),
256 { ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.csi2_serial_bus.type),
257 AML_OFFSET(csi2_serial_bus.type),
261 ACPI_RS_OFFSET(data.csi2_serial_bus.producer_consumer),
262 AML_OFFSET(csi2_serial_bus.flags),
265 { ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.slave_mode),
266 AML_OFFSET(csi2_serial_bus.flags),
269 { ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.phy_type),
270 AML_OFFSET(csi2_serial_bus.type_specific_flags),
274 ACPI_RS_OFFSET(data.csi2_serial_bus.local_port_instance),
275 AML_OFFSET(csi2_serial_bus.type_specific_flags),
278 { ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.csi2_serial_bus.type_revision_id),
279 AML_OFFSET(csi2_serial_bus.type_revision_id),
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 },
289 { ACPI_RSC_MOVE_SERIAL_VEN,
290 ACPI_RS_OFFSET(data.csi2_serial_bus.vendor_data),
292 sizeof(struct aml_resource_csi2_serialbus) },
294 /* Resource Source */
297 ACPI_RS_OFFSET(data.csi2_serial_bus.resource_source.index),
298 AML_OFFSET(csi2_serial_bus.res_source_index),
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) },
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 sizeof(struct aml_resource_csi2_serialbus) },
312 /*******************************************************************************
314 * acpi_rs_convert_i2c_serial_bus
316 ******************************************************************************/
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)},
323 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
324 sizeof(struct aml_resource_i2c_serialbus),
327 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
328 AML_OFFSET(common_serial_bus.revision_id),
331 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
332 AML_OFFSET(common_serial_bus.type),
335 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
336 AML_OFFSET(common_serial_bus.flags),
340 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
341 AML_OFFSET(common_serial_bus.flags),
345 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
346 AML_OFFSET(common_serial_bus.flags),
350 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
351 AML_OFFSET(common_serial_bus.type_revision_id),
355 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
356 AML_OFFSET(common_serial_bus.type_data_length),
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},
366 {ACPI_RSC_MOVE_SERIAL_VEN,
367 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
369 sizeof(struct aml_resource_i2c_serialbus)},
371 /* Resource Source */
374 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
375 AML_OFFSET(common_serial_bus.res_source_index),
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)},
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 sizeof(struct aml_resource_common_serialbus)},
388 /* I2C bus type specific */
390 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
391 AML_OFFSET(i2c_serial_bus.type_specific_flags),
394 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
395 AML_OFFSET(i2c_serial_bus.connection_speed),
398 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
399 AML_OFFSET(i2c_serial_bus.slave_address),
403 /*******************************************************************************
405 * acpi_rs_convert_spi_serial_bus
407 ******************************************************************************/
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)},
414 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
415 sizeof(struct aml_resource_spi_serialbus),
418 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
419 AML_OFFSET(common_serial_bus.revision_id),
422 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
423 AML_OFFSET(common_serial_bus.type),
426 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
427 AML_OFFSET(common_serial_bus.flags),
431 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
432 AML_OFFSET(common_serial_bus.flags),
436 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
437 AML_OFFSET(common_serial_bus.flags),
441 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
442 AML_OFFSET(common_serial_bus.type_revision_id),
446 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
447 AML_OFFSET(common_serial_bus.type_data_length),
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},
457 {ACPI_RSC_MOVE_SERIAL_VEN,
458 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
460 sizeof(struct aml_resource_spi_serialbus)},
462 /* Resource Source */
465 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
466 AML_OFFSET(common_serial_bus.res_source_index),
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)},
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 sizeof(struct aml_resource_common_serialbus)},
479 /* Spi bus type specific */
481 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
482 AML_OFFSET(spi_serial_bus.type_specific_flags),
485 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
486 AML_OFFSET(spi_serial_bus.type_specific_flags),
489 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
490 AML_OFFSET(spi_serial_bus.data_bit_length),
493 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
494 AML_OFFSET(spi_serial_bus.clock_phase),
497 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
498 AML_OFFSET(spi_serial_bus.clock_polarity),
501 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
502 AML_OFFSET(spi_serial_bus.device_selection),
505 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
506 AML_OFFSET(spi_serial_bus.connection_speed),
510 /*******************************************************************************
512 * acpi_rs_convert_uart_serial_bus
514 ******************************************************************************/
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)},
521 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
522 sizeof(struct aml_resource_uart_serialbus),
525 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
526 AML_OFFSET(common_serial_bus.revision_id),
529 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
530 AML_OFFSET(common_serial_bus.type),
533 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
534 AML_OFFSET(common_serial_bus.flags),
538 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
539 AML_OFFSET(common_serial_bus.flags),
543 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
544 AML_OFFSET(common_serial_bus.flags),
548 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
549 AML_OFFSET(common_serial_bus.type_revision_id),
553 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
554 AML_OFFSET(common_serial_bus.type_data_length),
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},
564 {ACPI_RSC_MOVE_SERIAL_VEN,
565 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
567 sizeof(struct aml_resource_uart_serialbus)},
569 /* Resource Source */
572 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
573 AML_OFFSET(common_serial_bus.res_source_index),
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)},
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 sizeof(struct aml_resource_common_serialbus)},
586 /* Uart bus type specific */
588 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
589 AML_OFFSET(uart_serial_bus.type_specific_flags),
592 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
593 AML_OFFSET(uart_serial_bus.type_specific_flags),
596 {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
597 AML_OFFSET(uart_serial_bus.type_specific_flags),
600 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
601 AML_OFFSET(uart_serial_bus.type_specific_flags),
604 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
605 AML_OFFSET(uart_serial_bus.parity),
608 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
609 AML_OFFSET(uart_serial_bus.lines_enabled),
612 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
613 AML_OFFSET(uart_serial_bus.rx_fifo_size),
616 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
617 AML_OFFSET(uart_serial_bus.tx_fifo_size),
621 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
622 AML_OFFSET(uart_serial_bus.default_baud_rate),
626 /*******************************************************************************
628 * acpi_rs_convert_pin_config
630 ******************************************************************************/
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)},
637 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG,
638 sizeof(struct aml_resource_pin_config),
641 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id),
642 AML_OFFSET(pin_config.revision_id),
645 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable),
646 AML_OFFSET(pin_config.flags),
649 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer),
650 AML_OFFSET(pin_config.flags),
653 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type),
654 AML_OFFSET(pin_config.pin_config_type),
657 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value),
658 AML_OFFSET(pin_config.pin_config_value),
664 * It is OK to use GPIO operations here because none of them refer GPIO
665 * structures directly but instead use offsets given here.
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)},
673 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table),
674 AML_OFFSET(pin_config.pin_table_offset),
677 /* Resource Source */
679 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index),
680 AML_OFFSET(pin_config.res_source_index),
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)},
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),
695 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length),
696 AML_OFFSET(pin_config.vendor_length),
699 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data),
700 AML_OFFSET(pin_config.vendor_offset),
704 /*******************************************************************************
706 * acpi_rs_convert_pin_group
708 ******************************************************************************/
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)},
715 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP,
716 sizeof(struct aml_resource_pin_group),
719 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id),
720 AML_OFFSET(pin_group.revision_id),
723 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer),
724 AML_OFFSET(pin_group.flags),
730 * It is OK to use GPIO operations here because none of them refer GPIO
731 * structures directly but instead use offsets given here.
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)},
739 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table),
740 AML_OFFSET(pin_group.pin_table_offset),
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)},
750 {ACPI_RSC_MOVE_GPIO_RES,
751 ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr),
752 AML_OFFSET(pin_group.label_offset),
757 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length),
758 AML_OFFSET(pin_group.vendor_length),
761 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data),
762 AML_OFFSET(pin_group.vendor_offset),
766 /*******************************************************************************
768 * acpi_rs_convert_pin_group_function
770 ******************************************************************************/
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)},
777 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
778 sizeof(struct aml_resource_pin_group_function),
781 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id),
782 AML_OFFSET(pin_group_function.revision_id),
785 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable),
786 AML_OFFSET(pin_group_function.flags),
790 ACPI_RS_OFFSET(data.pin_group_function.producer_consumer),
791 AML_OFFSET(pin_group_function.flags),
795 ACPI_RS_OFFSET(data.pin_group_function.function_number),
796 AML_OFFSET(pin_group_function.function_number),
799 /* Resource Source */
802 ACPI_RS_OFFSET(data.pin_group_function.resource_source.index),
803 AML_OFFSET(pin_group_function.res_source_index),
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)},
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),
816 /* Resource Source Label */
818 {ACPI_RSC_COUNT_GPIO_RES,
819 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
821 AML_OFFSET(pin_group_function.res_source_label_offset),
822 AML_OFFSET(pin_group_function.vendor_offset)},
824 {ACPI_RSC_MOVE_GPIO_RES,
825 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
827 AML_OFFSET(pin_group_function.res_source_label_offset),
832 {ACPI_RSC_COUNT_GPIO_VEN,
833 ACPI_RS_OFFSET(data.pin_group_function.vendor_length),
834 AML_OFFSET(pin_group_function.vendor_length),
837 {ACPI_RSC_MOVE_GPIO_RES,
838 ACPI_RS_OFFSET(data.pin_group_function.vendor_data),
839 AML_OFFSET(pin_group_function.vendor_offset),
843 /*******************************************************************************
845 * acpi_rs_convert_pin_group_config
847 ******************************************************************************/
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)},
854 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
855 sizeof(struct aml_resource_pin_group_config),
858 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id),
859 AML_OFFSET(pin_group_config.revision_id),
862 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable),
863 AML_OFFSET(pin_group_config.flags),
867 ACPI_RS_OFFSET(data.pin_group_config.producer_consumer),
868 AML_OFFSET(pin_group_config.flags),
871 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type),
872 AML_OFFSET(pin_group_config.pin_config_type),
876 ACPI_RS_OFFSET(data.pin_group_config.pin_config_value),
877 AML_OFFSET(pin_group_config.pin_config_value),
880 /* Resource Source */
883 ACPI_RS_OFFSET(data.pin_group_config.resource_source.index),
884 AML_OFFSET(pin_group_config.res_source_index),
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)},
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),
897 /* Resource Source Label */
899 {ACPI_RSC_COUNT_GPIO_RES,
900 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.
902 AML_OFFSET(pin_group_config.res_source_label_offset),
903 AML_OFFSET(pin_group_config.vendor_offset)},
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),
912 {ACPI_RSC_COUNT_GPIO_VEN,
913 ACPI_RS_OFFSET(data.pin_group_config.vendor_length),
914 AML_OFFSET(pin_group_config.vendor_length),
917 {ACPI_RSC_MOVE_GPIO_RES,
918 ACPI_RS_OFFSET(data.pin_group_config.vendor_data),
919 AML_OFFSET(pin_group_config.vendor_offset),