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_csi2_serial_bus
192 ******************************************************************************/
194 struct acpi_rsconvert_info acpi_rs_convert_csi2_serial_bus[14] = {
195 { ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
196 ACPI_RS_SIZE(struct acpi_resource_csi2_serialbus),
197 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_csi2_serial_bus) },
199 { ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
200 sizeof(struct aml_resource_csi2_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.csi2_serial_bus.type),
208 AML_OFFSET(csi2_serial_bus.type),
212 ACPI_RS_OFFSET(data.csi2_serial_bus.producer_consumer),
213 AML_OFFSET(csi2_serial_bus.flags),
216 { ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.slave_mode),
217 AML_OFFSET(csi2_serial_bus.flags),
220 { ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.phy_type),
221 AML_OFFSET(csi2_serial_bus.type_specific_flags),
225 ACPI_RS_OFFSET(data.csi2_serial_bus.local_port_instance),
226 AML_OFFSET(csi2_serial_bus.type_specific_flags),
229 { ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.csi2_serial_bus.type_revision_id),
230 AML_OFFSET(csi2_serial_bus.type_revision_id),
235 { ACPI_RSC_COUNT_SERIAL_VEN,
236 ACPI_RS_OFFSET(data.csi2_serial_bus.vendor_length),
237 AML_OFFSET(csi2_serial_bus.type_data_length),
238 AML_RESOURCE_CSI2_MIN_DATA_LEN },
240 { ACPI_RSC_MOVE_SERIAL_VEN,
241 ACPI_RS_OFFSET(data.csi2_serial_bus.vendor_data),
243 sizeof(struct aml_resource_csi2_serialbus) },
245 /* Resource Source */
248 ACPI_RS_OFFSET(data.csi2_serial_bus.resource_source.index),
249 AML_OFFSET(csi2_serial_bus.res_source_index),
252 { ACPI_RSC_COUNT_SERIAL_RES,
253 ACPI_RS_OFFSET(data.csi2_serial_bus.resource_source.string_length),
254 AML_OFFSET(csi2_serial_bus.type_data_length),
255 sizeof(struct aml_resource_csi2_serialbus) },
257 { ACPI_RSC_MOVE_SERIAL_RES,
258 ACPI_RS_OFFSET(data.csi2_serial_bus.resource_source.string_ptr),
259 AML_OFFSET(csi2_serial_bus.type_data_length),
260 sizeof(struct aml_resource_csi2_serialbus) },
263 /*******************************************************************************
265 * acpi_rs_convert_i2c_serial_bus
267 ******************************************************************************/
269 struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[17] = {
270 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
271 ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
272 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus)},
274 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
275 sizeof(struct aml_resource_i2c_serialbus),
278 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
279 AML_OFFSET(common_serial_bus.revision_id),
282 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
283 AML_OFFSET(common_serial_bus.type),
286 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
287 AML_OFFSET(common_serial_bus.flags),
291 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
292 AML_OFFSET(common_serial_bus.flags),
296 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
297 AML_OFFSET(common_serial_bus.flags),
301 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
302 AML_OFFSET(common_serial_bus.type_revision_id),
306 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
307 AML_OFFSET(common_serial_bus.type_data_length),
312 {ACPI_RSC_COUNT_SERIAL_VEN,
313 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
314 AML_OFFSET(common_serial_bus.type_data_length),
315 AML_RESOURCE_I2C_MIN_DATA_LEN},
317 {ACPI_RSC_MOVE_SERIAL_VEN,
318 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
320 sizeof(struct aml_resource_i2c_serialbus)},
322 /* Resource Source */
325 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
326 AML_OFFSET(common_serial_bus.res_source_index),
329 {ACPI_RSC_COUNT_SERIAL_RES,
330 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
331 AML_OFFSET(common_serial_bus.type_data_length),
332 sizeof(struct aml_resource_common_serialbus)},
334 {ACPI_RSC_MOVE_SERIAL_RES,
335 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
336 AML_OFFSET(common_serial_bus.type_data_length),
337 sizeof(struct aml_resource_common_serialbus)},
339 /* I2C bus type specific */
341 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
342 AML_OFFSET(i2c_serial_bus.type_specific_flags),
345 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
346 AML_OFFSET(i2c_serial_bus.connection_speed),
349 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
350 AML_OFFSET(i2c_serial_bus.slave_address),
354 /*******************************************************************************
356 * acpi_rs_convert_spi_serial_bus
358 ******************************************************************************/
360 struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[21] = {
361 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
362 ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
363 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus)},
365 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
366 sizeof(struct aml_resource_spi_serialbus),
369 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
370 AML_OFFSET(common_serial_bus.revision_id),
373 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
374 AML_OFFSET(common_serial_bus.type),
377 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
378 AML_OFFSET(common_serial_bus.flags),
382 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
383 AML_OFFSET(common_serial_bus.flags),
387 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
388 AML_OFFSET(common_serial_bus.flags),
392 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
393 AML_OFFSET(common_serial_bus.type_revision_id),
397 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
398 AML_OFFSET(common_serial_bus.type_data_length),
403 {ACPI_RSC_COUNT_SERIAL_VEN,
404 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
405 AML_OFFSET(common_serial_bus.type_data_length),
406 AML_RESOURCE_SPI_MIN_DATA_LEN},
408 {ACPI_RSC_MOVE_SERIAL_VEN,
409 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
411 sizeof(struct aml_resource_spi_serialbus)},
413 /* Resource Source */
416 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
417 AML_OFFSET(common_serial_bus.res_source_index),
420 {ACPI_RSC_COUNT_SERIAL_RES,
421 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
422 AML_OFFSET(common_serial_bus.type_data_length),
423 sizeof(struct aml_resource_common_serialbus)},
425 {ACPI_RSC_MOVE_SERIAL_RES,
426 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
427 AML_OFFSET(common_serial_bus.type_data_length),
428 sizeof(struct aml_resource_common_serialbus)},
430 /* Spi bus type specific */
432 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
433 AML_OFFSET(spi_serial_bus.type_specific_flags),
436 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
437 AML_OFFSET(spi_serial_bus.type_specific_flags),
440 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
441 AML_OFFSET(spi_serial_bus.data_bit_length),
444 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
445 AML_OFFSET(spi_serial_bus.clock_phase),
448 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
449 AML_OFFSET(spi_serial_bus.clock_polarity),
452 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
453 AML_OFFSET(spi_serial_bus.device_selection),
456 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
457 AML_OFFSET(spi_serial_bus.connection_speed),
461 /*******************************************************************************
463 * acpi_rs_convert_uart_serial_bus
465 ******************************************************************************/
467 struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[23] = {
468 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
469 ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
470 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus)},
472 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
473 sizeof(struct aml_resource_uart_serialbus),
476 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
477 AML_OFFSET(common_serial_bus.revision_id),
480 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
481 AML_OFFSET(common_serial_bus.type),
484 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
485 AML_OFFSET(common_serial_bus.flags),
489 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
490 AML_OFFSET(common_serial_bus.flags),
494 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
495 AML_OFFSET(common_serial_bus.flags),
499 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
500 AML_OFFSET(common_serial_bus.type_revision_id),
504 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
505 AML_OFFSET(common_serial_bus.type_data_length),
510 {ACPI_RSC_COUNT_SERIAL_VEN,
511 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
512 AML_OFFSET(common_serial_bus.type_data_length),
513 AML_RESOURCE_UART_MIN_DATA_LEN},
515 {ACPI_RSC_MOVE_SERIAL_VEN,
516 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
518 sizeof(struct aml_resource_uart_serialbus)},
520 /* Resource Source */
523 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
524 AML_OFFSET(common_serial_bus.res_source_index),
527 {ACPI_RSC_COUNT_SERIAL_RES,
528 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
529 AML_OFFSET(common_serial_bus.type_data_length),
530 sizeof(struct aml_resource_common_serialbus)},
532 {ACPI_RSC_MOVE_SERIAL_RES,
533 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
534 AML_OFFSET(common_serial_bus.type_data_length),
535 sizeof(struct aml_resource_common_serialbus)},
537 /* Uart bus type specific */
539 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
540 AML_OFFSET(uart_serial_bus.type_specific_flags),
543 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
544 AML_OFFSET(uart_serial_bus.type_specific_flags),
547 {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
548 AML_OFFSET(uart_serial_bus.type_specific_flags),
551 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
552 AML_OFFSET(uart_serial_bus.type_specific_flags),
555 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
556 AML_OFFSET(uart_serial_bus.parity),
559 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
560 AML_OFFSET(uart_serial_bus.lines_enabled),
563 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
564 AML_OFFSET(uart_serial_bus.rx_fifo_size),
567 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
568 AML_OFFSET(uart_serial_bus.tx_fifo_size),
572 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
573 AML_OFFSET(uart_serial_bus.default_baud_rate),
577 /*******************************************************************************
579 * acpi_rs_convert_pin_config
581 ******************************************************************************/
583 struct acpi_rsconvert_info acpi_rs_convert_pin_config[14] = {
584 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_CONFIG,
585 ACPI_RS_SIZE(struct acpi_resource_pin_config),
586 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_config)},
588 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG,
589 sizeof(struct aml_resource_pin_config),
592 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id),
593 AML_OFFSET(pin_config.revision_id),
596 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable),
597 AML_OFFSET(pin_config.flags),
600 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer),
601 AML_OFFSET(pin_config.flags),
604 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type),
605 AML_OFFSET(pin_config.pin_config_type),
608 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value),
609 AML_OFFSET(pin_config.pin_config_value),
615 * It is OK to use GPIO operations here because none of them refer GPIO
616 * structures directly but instead use offsets given here.
619 {ACPI_RSC_COUNT_GPIO_PIN,
620 ACPI_RS_OFFSET(data.pin_config.pin_table_length),
621 AML_OFFSET(pin_config.pin_table_offset),
622 AML_OFFSET(pin_config.res_source_offset)},
624 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table),
625 AML_OFFSET(pin_config.pin_table_offset),
628 /* Resource Source */
630 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index),
631 AML_OFFSET(pin_config.res_source_index),
634 {ACPI_RSC_COUNT_GPIO_RES,
635 ACPI_RS_OFFSET(data.pin_config.resource_source.string_length),
636 AML_OFFSET(pin_config.res_source_offset),
637 AML_OFFSET(pin_config.vendor_offset)},
639 {ACPI_RSC_MOVE_GPIO_RES,
640 ACPI_RS_OFFSET(data.pin_config.resource_source.string_ptr),
641 AML_OFFSET(pin_config.res_source_offset),
646 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length),
647 AML_OFFSET(pin_config.vendor_length),
650 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data),
651 AML_OFFSET(pin_config.vendor_offset),
655 /*******************************************************************************
657 * acpi_rs_convert_pin_group
659 ******************************************************************************/
661 struct acpi_rsconvert_info acpi_rs_convert_pin_group[10] = {
662 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP,
663 ACPI_RS_SIZE(struct acpi_resource_pin_group),
664 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group)},
666 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP,
667 sizeof(struct aml_resource_pin_group),
670 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id),
671 AML_OFFSET(pin_group.revision_id),
674 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer),
675 AML_OFFSET(pin_group.flags),
681 * It is OK to use GPIO operations here because none of them refer GPIO
682 * structures directly but instead use offsets given here.
685 {ACPI_RSC_COUNT_GPIO_PIN,
686 ACPI_RS_OFFSET(data.pin_group.pin_table_length),
687 AML_OFFSET(pin_group.pin_table_offset),
688 AML_OFFSET(pin_group.label_offset)},
690 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table),
691 AML_OFFSET(pin_group.pin_table_offset),
696 {ACPI_RSC_COUNT_GPIO_RES,
697 ACPI_RS_OFFSET(data.pin_group.resource_label.string_length),
698 AML_OFFSET(pin_group.label_offset),
699 AML_OFFSET(pin_group.vendor_offset)},
701 {ACPI_RSC_MOVE_GPIO_RES,
702 ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr),
703 AML_OFFSET(pin_group.label_offset),
708 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length),
709 AML_OFFSET(pin_group.vendor_length),
712 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data),
713 AML_OFFSET(pin_group.vendor_offset),
717 /*******************************************************************************
719 * acpi_rs_convert_pin_group_function
721 ******************************************************************************/
723 struct acpi_rsconvert_info acpi_rs_convert_pin_group_function[13] = {
724 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION,
725 ACPI_RS_SIZE(struct acpi_resource_pin_group_function),
726 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_function)},
728 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
729 sizeof(struct aml_resource_pin_group_function),
732 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id),
733 AML_OFFSET(pin_group_function.revision_id),
736 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable),
737 AML_OFFSET(pin_group_function.flags),
741 ACPI_RS_OFFSET(data.pin_group_function.producer_consumer),
742 AML_OFFSET(pin_group_function.flags),
746 ACPI_RS_OFFSET(data.pin_group_function.function_number),
747 AML_OFFSET(pin_group_function.function_number),
750 /* Resource Source */
753 ACPI_RS_OFFSET(data.pin_group_function.resource_source.index),
754 AML_OFFSET(pin_group_function.res_source_index),
757 {ACPI_RSC_COUNT_GPIO_RES,
758 ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_length),
759 AML_OFFSET(pin_group_function.res_source_offset),
760 AML_OFFSET(pin_group_function.res_source_label_offset)},
762 {ACPI_RSC_MOVE_GPIO_RES,
763 ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_ptr),
764 AML_OFFSET(pin_group_function.res_source_offset),
767 /* Resource Source Label */
769 {ACPI_RSC_COUNT_GPIO_RES,
770 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
772 AML_OFFSET(pin_group_function.res_source_label_offset),
773 AML_OFFSET(pin_group_function.vendor_offset)},
775 {ACPI_RSC_MOVE_GPIO_RES,
776 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
778 AML_OFFSET(pin_group_function.res_source_label_offset),
783 {ACPI_RSC_COUNT_GPIO_VEN,
784 ACPI_RS_OFFSET(data.pin_group_function.vendor_length),
785 AML_OFFSET(pin_group_function.vendor_length),
788 {ACPI_RSC_MOVE_GPIO_RES,
789 ACPI_RS_OFFSET(data.pin_group_function.vendor_data),
790 AML_OFFSET(pin_group_function.vendor_offset),
794 /*******************************************************************************
796 * acpi_rs_convert_pin_group_config
798 ******************************************************************************/
800 struct acpi_rsconvert_info acpi_rs_convert_pin_group_config[14] = {
801 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG,
802 ACPI_RS_SIZE(struct acpi_resource_pin_group_config),
803 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_config)},
805 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
806 sizeof(struct aml_resource_pin_group_config),
809 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id),
810 AML_OFFSET(pin_group_config.revision_id),
813 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable),
814 AML_OFFSET(pin_group_config.flags),
818 ACPI_RS_OFFSET(data.pin_group_config.producer_consumer),
819 AML_OFFSET(pin_group_config.flags),
822 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type),
823 AML_OFFSET(pin_group_config.pin_config_type),
827 ACPI_RS_OFFSET(data.pin_group_config.pin_config_value),
828 AML_OFFSET(pin_group_config.pin_config_value),
831 /* Resource Source */
834 ACPI_RS_OFFSET(data.pin_group_config.resource_source.index),
835 AML_OFFSET(pin_group_config.res_source_index),
838 {ACPI_RSC_COUNT_GPIO_RES,
839 ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_length),
840 AML_OFFSET(pin_group_config.res_source_offset),
841 AML_OFFSET(pin_group_config.res_source_label_offset)},
843 {ACPI_RSC_MOVE_GPIO_RES,
844 ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_ptr),
845 AML_OFFSET(pin_group_config.res_source_offset),
848 /* Resource Source Label */
850 {ACPI_RSC_COUNT_GPIO_RES,
851 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.
853 AML_OFFSET(pin_group_config.res_source_label_offset),
854 AML_OFFSET(pin_group_config.vendor_offset)},
856 {ACPI_RSC_MOVE_GPIO_RES,
857 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.string_ptr),
858 AML_OFFSET(pin_group_config.res_source_label_offset),
863 {ACPI_RSC_COUNT_GPIO_VEN,
864 ACPI_RS_OFFSET(data.pin_group_config.vendor_length),
865 AML_OFFSET(pin_group_config.vendor_length),
868 {ACPI_RSC_MOVE_GPIO_RES,
869 ACPI_RS_OFFSET(data.pin_group_config.vendor_data),
870 AML_OFFSET(pin_group_config.vendor_offset),