Loading...
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
13ACPI_MODULE_NAME("rsserial")
14
15/*******************************************************************************
16 *
17 * acpi_rs_convert_gpio
18 *
19 ******************************************************************************/
20struct 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 sizeof(struct aml_resource_gpio),
27 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 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 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 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 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 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 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 0},
110};
111
112/*******************************************************************************
113 *
114 * acpi_rs_convert_clock_input
115 *
116 ******************************************************************************/
117
118struct 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 sizeof(struct aml_resource_clock_input),
125 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 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 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 0,
156 sizeof(struct aml_resource_clock_input)}
157 ,
158
159};
160
161/*******************************************************************************
162 *
163 * acpi_rs_convert_pinfunction
164 *
165 ******************************************************************************/
166
167struct 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 sizeof(struct aml_resource_pin_function),
174 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 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 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 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 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
243struct 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 sizeof(struct aml_resource_csi2_serialbus),
250 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 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 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 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 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 sizeof(struct aml_resource_csi2_serialbus) },
310};
311
312/*******************************************************************************
313 *
314 * acpi_rs_convert_i2c_serial_bus
315 *
316 ******************************************************************************/
317
318struct 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 sizeof(struct aml_resource_i2c_serialbus),
325 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 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 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 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 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 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 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
409struct 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 sizeof(struct aml_resource_spi_serialbus),
416 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 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 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 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 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 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 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 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 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
516struct 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 sizeof(struct aml_resource_uart_serialbus),
523 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 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 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 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 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 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 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 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 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 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
632struct 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 sizeof(struct aml_resource_pin_config),
639 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 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 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 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 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 0},
702};
703
704/*******************************************************************************
705 *
706 * acpi_rs_convert_pin_group
707 *
708 ******************************************************************************/
709
710struct 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 sizeof(struct aml_resource_pin_group),
717 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 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 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 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 0},
764};
765
766/*******************************************************************************
767 *
768 * acpi_rs_convert_pin_group_function
769 *
770 ******************************************************************************/
771
772struct 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 sizeof(struct aml_resource_pin_group_function),
779 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 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 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 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
849struct 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 sizeof(struct aml_resource_pin_group_config),
856 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 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 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 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 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 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 0},
921};
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
13ACPI_MODULE_NAME("rsserial")
14
15/*******************************************************************************
16 *
17 * acpi_rs_convert_gpio
18 *
19 ******************************************************************************/
20struct 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 sizeof(struct aml_resource_gpio),
27 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 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 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 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 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 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 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 0},
110};
111
112/*******************************************************************************
113 *
114 * acpi_rs_convert_pinfunction
115 *
116 ******************************************************************************/
117
118struct 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)},
122
123 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_FUNCTION,
124 sizeof(struct aml_resource_pin_function),
125 0},
126
127 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.revision_id),
128 AML_OFFSET(pin_function.revision_id),
129 1},
130
131 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_function.shareable),
132 AML_OFFSET(pin_function.flags),
133 0},
134
135 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.pin_config),
136 AML_OFFSET(pin_function.pin_config),
137 1},
138
139 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.pin_function.function_number),
140 AML_OFFSET(pin_function.function_number),
141 2},
142
143 /* Pin Table */
144
145 /*
146 * It is OK to use GPIO operations here because none of them refer GPIO
147 * structures directly but instead use offsets given here.
148 */
149
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)},
154
155 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_function.pin_table),
156 AML_OFFSET(pin_function.pin_table_offset),
157 0},
158
159 /* Resource Source */
160
161 {ACPI_RSC_MOVE8,
162 ACPI_RS_OFFSET(data.pin_function.resource_source.index),
163 AML_OFFSET(pin_function.res_source_index),
164 1},
165
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)},
170
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),
174 0},
175
176 /* Vendor Data */
177
178 {ACPI_RSC_COUNT_GPIO_VEN,
179 ACPI_RS_OFFSET(data.pin_function.vendor_length),
180 AML_OFFSET(pin_function.vendor_length),
181 1},
182
183 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_function.vendor_data),
184 AML_OFFSET(pin_function.vendor_offset),
185 0},
186};
187
188/*******************************************************************************
189 *
190 * acpi_rs_convert_i2c_serial_bus
191 *
192 ******************************************************************************/
193
194struct 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)},
198
199 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
200 sizeof(struct aml_resource_i2c_serialbus),
201 0},
202
203 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
204 AML_OFFSET(common_serial_bus.revision_id),
205 1},
206
207 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
208 AML_OFFSET(common_serial_bus.type),
209 1},
210
211 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
212 AML_OFFSET(common_serial_bus.flags),
213 0},
214
215 {ACPI_RSC_1BITFLAG,
216 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
217 AML_OFFSET(common_serial_bus.flags),
218 1},
219
220 {ACPI_RSC_1BITFLAG,
221 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
222 AML_OFFSET(common_serial_bus.flags),
223 2},
224
225 {ACPI_RSC_MOVE8,
226 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
227 AML_OFFSET(common_serial_bus.type_revision_id),
228 1},
229
230 {ACPI_RSC_MOVE16,
231 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
232 AML_OFFSET(common_serial_bus.type_data_length),
233 1},
234
235 /* Vendor data */
236
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},
241
242 {ACPI_RSC_MOVE_SERIAL_VEN,
243 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
244 0,
245 sizeof(struct aml_resource_i2c_serialbus)},
246
247 /* Resource Source */
248
249 {ACPI_RSC_MOVE8,
250 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
251 AML_OFFSET(common_serial_bus.res_source_index),
252 1},
253
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)},
258
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)},
263
264 /* I2C bus type specific */
265
266 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
267 AML_OFFSET(i2c_serial_bus.type_specific_flags),
268 0},
269
270 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
271 AML_OFFSET(i2c_serial_bus.connection_speed),
272 1},
273
274 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
275 AML_OFFSET(i2c_serial_bus.slave_address),
276 1},
277};
278
279/*******************************************************************************
280 *
281 * acpi_rs_convert_spi_serial_bus
282 *
283 ******************************************************************************/
284
285struct 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)},
289
290 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
291 sizeof(struct aml_resource_spi_serialbus),
292 0},
293
294 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
295 AML_OFFSET(common_serial_bus.revision_id),
296 1},
297
298 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
299 AML_OFFSET(common_serial_bus.type),
300 1},
301
302 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
303 AML_OFFSET(common_serial_bus.flags),
304 0},
305
306 {ACPI_RSC_1BITFLAG,
307 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
308 AML_OFFSET(common_serial_bus.flags),
309 1},
310
311 {ACPI_RSC_1BITFLAG,
312 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
313 AML_OFFSET(common_serial_bus.flags),
314 2},
315
316 {ACPI_RSC_MOVE8,
317 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
318 AML_OFFSET(common_serial_bus.type_revision_id),
319 1},
320
321 {ACPI_RSC_MOVE16,
322 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
323 AML_OFFSET(common_serial_bus.type_data_length),
324 1},
325
326 /* Vendor data */
327
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},
332
333 {ACPI_RSC_MOVE_SERIAL_VEN,
334 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
335 0,
336 sizeof(struct aml_resource_spi_serialbus)},
337
338 /* Resource Source */
339
340 {ACPI_RSC_MOVE8,
341 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
342 AML_OFFSET(common_serial_bus.res_source_index),
343 1},
344
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)},
349
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)},
354
355 /* Spi bus type specific */
356
357 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
358 AML_OFFSET(spi_serial_bus.type_specific_flags),
359 0},
360
361 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
362 AML_OFFSET(spi_serial_bus.type_specific_flags),
363 1},
364
365 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
366 AML_OFFSET(spi_serial_bus.data_bit_length),
367 1},
368
369 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
370 AML_OFFSET(spi_serial_bus.clock_phase),
371 1},
372
373 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
374 AML_OFFSET(spi_serial_bus.clock_polarity),
375 1},
376
377 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
378 AML_OFFSET(spi_serial_bus.device_selection),
379 1},
380
381 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
382 AML_OFFSET(spi_serial_bus.connection_speed),
383 1},
384};
385
386/*******************************************************************************
387 *
388 * acpi_rs_convert_uart_serial_bus
389 *
390 ******************************************************************************/
391
392struct 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)},
396
397 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
398 sizeof(struct aml_resource_uart_serialbus),
399 0},
400
401 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
402 AML_OFFSET(common_serial_bus.revision_id),
403 1},
404
405 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
406 AML_OFFSET(common_serial_bus.type),
407 1},
408
409 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
410 AML_OFFSET(common_serial_bus.flags),
411 0},
412
413 {ACPI_RSC_1BITFLAG,
414 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
415 AML_OFFSET(common_serial_bus.flags),
416 1},
417
418 {ACPI_RSC_1BITFLAG,
419 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
420 AML_OFFSET(common_serial_bus.flags),
421 2},
422
423 {ACPI_RSC_MOVE8,
424 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
425 AML_OFFSET(common_serial_bus.type_revision_id),
426 1},
427
428 {ACPI_RSC_MOVE16,
429 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
430 AML_OFFSET(common_serial_bus.type_data_length),
431 1},
432
433 /* Vendor data */
434
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},
439
440 {ACPI_RSC_MOVE_SERIAL_VEN,
441 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
442 0,
443 sizeof(struct aml_resource_uart_serialbus)},
444
445 /* Resource Source */
446
447 {ACPI_RSC_MOVE8,
448 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
449 AML_OFFSET(common_serial_bus.res_source_index),
450 1},
451
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)},
456
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)},
461
462 /* Uart bus type specific */
463
464 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
465 AML_OFFSET(uart_serial_bus.type_specific_flags),
466 0},
467
468 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
469 AML_OFFSET(uart_serial_bus.type_specific_flags),
470 2},
471
472 {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
473 AML_OFFSET(uart_serial_bus.type_specific_flags),
474 4},
475
476 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
477 AML_OFFSET(uart_serial_bus.type_specific_flags),
478 7},
479
480 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
481 AML_OFFSET(uart_serial_bus.parity),
482 1},
483
484 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
485 AML_OFFSET(uart_serial_bus.lines_enabled),
486 1},
487
488 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
489 AML_OFFSET(uart_serial_bus.rx_fifo_size),
490 1},
491
492 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
493 AML_OFFSET(uart_serial_bus.tx_fifo_size),
494 1},
495
496 {ACPI_RSC_MOVE32,
497 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
498 AML_OFFSET(uart_serial_bus.default_baud_rate),
499 1},
500};
501
502/*******************************************************************************
503 *
504 * acpi_rs_convert_pin_config
505 *
506 ******************************************************************************/
507
508struct 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)},
512
513 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG,
514 sizeof(struct aml_resource_pin_config),
515 0},
516
517 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id),
518 AML_OFFSET(pin_config.revision_id),
519 1},
520
521 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable),
522 AML_OFFSET(pin_config.flags),
523 0},
524
525 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer),
526 AML_OFFSET(pin_config.flags),
527 1},
528
529 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type),
530 AML_OFFSET(pin_config.pin_config_type),
531 1},
532
533 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value),
534 AML_OFFSET(pin_config.pin_config_value),
535 1},
536
537 /* Pin Table */
538
539 /*
540 * It is OK to use GPIO operations here because none of them refer GPIO
541 * structures directly but instead use offsets given here.
542 */
543
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)},
548
549 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table),
550 AML_OFFSET(pin_config.pin_table_offset),
551 0},
552
553 /* Resource Source */
554
555 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index),
556 AML_OFFSET(pin_config.res_source_index),
557 1},
558
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)},
563
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),
567 0},
568
569 /* Vendor Data */
570
571 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length),
572 AML_OFFSET(pin_config.vendor_length),
573 1},
574
575 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data),
576 AML_OFFSET(pin_config.vendor_offset),
577 0},
578};
579
580/*******************************************************************************
581 *
582 * acpi_rs_convert_pin_group
583 *
584 ******************************************************************************/
585
586struct 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)},
590
591 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP,
592 sizeof(struct aml_resource_pin_group),
593 0},
594
595 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id),
596 AML_OFFSET(pin_group.revision_id),
597 1},
598
599 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer),
600 AML_OFFSET(pin_group.flags),
601 0},
602
603 /* Pin Table */
604
605 /*
606 * It is OK to use GPIO operations here because none of them refer GPIO
607 * structures directly but instead use offsets given here.
608 */
609
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)},
614
615 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table),
616 AML_OFFSET(pin_group.pin_table_offset),
617 0},
618
619 /* Resource Label */
620
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)},
625
626 {ACPI_RSC_MOVE_GPIO_RES,
627 ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr),
628 AML_OFFSET(pin_group.label_offset),
629 0},
630
631 /* Vendor Data */
632
633 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length),
634 AML_OFFSET(pin_group.vendor_length),
635 1},
636
637 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data),
638 AML_OFFSET(pin_group.vendor_offset),
639 0},
640};
641
642/*******************************************************************************
643 *
644 * acpi_rs_convert_pin_group_function
645 *
646 ******************************************************************************/
647
648struct 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)},
652
653 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
654 sizeof(struct aml_resource_pin_group_function),
655 0},
656
657 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id),
658 AML_OFFSET(pin_group_function.revision_id),
659 1},
660
661 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable),
662 AML_OFFSET(pin_group_function.flags),
663 0},
664
665 {ACPI_RSC_1BITFLAG,
666 ACPI_RS_OFFSET(data.pin_group_function.producer_consumer),
667 AML_OFFSET(pin_group_function.flags),
668 1},
669
670 {ACPI_RSC_MOVE16,
671 ACPI_RS_OFFSET(data.pin_group_function.function_number),
672 AML_OFFSET(pin_group_function.function_number),
673 1},
674
675 /* Resource Source */
676
677 {ACPI_RSC_MOVE8,
678 ACPI_RS_OFFSET(data.pin_group_function.resource_source.index),
679 AML_OFFSET(pin_group_function.res_source_index),
680 1},
681
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)},
686
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),
690 0},
691
692 /* Resource Source Label */
693
694 {ACPI_RSC_COUNT_GPIO_RES,
695 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
696 string_length),
697 AML_OFFSET(pin_group_function.res_source_label_offset),
698 AML_OFFSET(pin_group_function.vendor_offset)},
699
700 {ACPI_RSC_MOVE_GPIO_RES,
701 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
702 string_ptr),
703 AML_OFFSET(pin_group_function.res_source_label_offset),
704 0},
705
706 /* Vendor Data */
707
708 {ACPI_RSC_COUNT_GPIO_VEN,
709 ACPI_RS_OFFSET(data.pin_group_function.vendor_length),
710 AML_OFFSET(pin_group_function.vendor_length),
711 1},
712
713 {ACPI_RSC_MOVE_GPIO_RES,
714 ACPI_RS_OFFSET(data.pin_group_function.vendor_data),
715 AML_OFFSET(pin_group_function.vendor_offset),
716 0},
717};
718
719/*******************************************************************************
720 *
721 * acpi_rs_convert_pin_group_config
722 *
723 ******************************************************************************/
724
725struct 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)},
729
730 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
731 sizeof(struct aml_resource_pin_group_config),
732 0},
733
734 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id),
735 AML_OFFSET(pin_group_config.revision_id),
736 1},
737
738 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable),
739 AML_OFFSET(pin_group_config.flags),
740 0},
741
742 {ACPI_RSC_1BITFLAG,
743 ACPI_RS_OFFSET(data.pin_group_config.producer_consumer),
744 AML_OFFSET(pin_group_config.flags),
745 1},
746
747 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type),
748 AML_OFFSET(pin_group_config.pin_config_type),
749 1},
750
751 {ACPI_RSC_MOVE32,
752 ACPI_RS_OFFSET(data.pin_group_config.pin_config_value),
753 AML_OFFSET(pin_group_config.pin_config_value),
754 1},
755
756 /* Resource Source */
757
758 {ACPI_RSC_MOVE8,
759 ACPI_RS_OFFSET(data.pin_group_config.resource_source.index),
760 AML_OFFSET(pin_group_config.res_source_index),
761 1},
762
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)},
767
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),
771 0},
772
773 /* Resource Source Label */
774
775 {ACPI_RSC_COUNT_GPIO_RES,
776 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.
777 string_length),
778 AML_OFFSET(pin_group_config.res_source_label_offset),
779 AML_OFFSET(pin_group_config.vendor_offset)},
780
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),
784 0},
785
786 /* Vendor Data */
787
788 {ACPI_RSC_COUNT_GPIO_VEN,
789 ACPI_RS_OFFSET(data.pin_group_config.vendor_length),
790 AML_OFFSET(pin_group_config.vendor_length),
791 1},
792
793 {ACPI_RSC_MOVE_GPIO_RES,
794 ACPI_RS_OFFSET(data.pin_group_config.vendor_data),
795 AML_OFFSET(pin_group_config.vendor_offset),
796 0},
797};