Linux Audio

Check our new training course

Loading...
v6.13.7
  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};
v6.2
  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_csi2_serial_bus
191 *
192 ******************************************************************************/
193
194struct 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) },
198
199	{ ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
200	 sizeof(struct aml_resource_csi2_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.csi2_serial_bus.type),
208	 AML_OFFSET(csi2_serial_bus.type),
209	 1 },
210
211	{ ACPI_RSC_1BITFLAG,
212	 ACPI_RS_OFFSET(data.csi2_serial_bus.producer_consumer),
213	 AML_OFFSET(csi2_serial_bus.flags),
214	 1 },
215
216	{ ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.slave_mode),
217	 AML_OFFSET(csi2_serial_bus.flags),
218	 0 },
219
220	{ ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.csi2_serial_bus.phy_type),
221	 AML_OFFSET(csi2_serial_bus.type_specific_flags),
222	 0 },
223
224	{ ACPI_RSC_6BITFLAG,
225	 ACPI_RS_OFFSET(data.csi2_serial_bus.local_port_instance),
226	 AML_OFFSET(csi2_serial_bus.type_specific_flags),
227	 2 },
228
229	{ ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.csi2_serial_bus.type_revision_id),
230	 AML_OFFSET(csi2_serial_bus.type_revision_id),
231	 1 },
232
233	/* Vendor data */
234
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 },
239
240	{ ACPI_RSC_MOVE_SERIAL_VEN,
241	 ACPI_RS_OFFSET(data.csi2_serial_bus.vendor_data),
242	 0,
243	 sizeof(struct aml_resource_csi2_serialbus) },
244
245	/* Resource Source */
246
247	{ ACPI_RSC_MOVE8,
248	 ACPI_RS_OFFSET(data.csi2_serial_bus.resource_source.index),
249	 AML_OFFSET(csi2_serial_bus.res_source_index),
250	 1 },
251
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) },
256
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) },
261};
262
263/*******************************************************************************
264 *
265 * acpi_rs_convert_i2c_serial_bus
266 *
267 ******************************************************************************/
268
269struct 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)},
273
274	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
275	 sizeof(struct aml_resource_i2c_serialbus),
276	 0},
277
278	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
279	 AML_OFFSET(common_serial_bus.revision_id),
280	 1},
281
282	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
283	 AML_OFFSET(common_serial_bus.type),
284	 1},
285
286	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
287	 AML_OFFSET(common_serial_bus.flags),
288	 0},
289
290	{ACPI_RSC_1BITFLAG,
291	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
292	 AML_OFFSET(common_serial_bus.flags),
293	 1},
294
295	{ACPI_RSC_1BITFLAG,
296	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
297	 AML_OFFSET(common_serial_bus.flags),
298	 2},
299
300	{ACPI_RSC_MOVE8,
301	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
302	 AML_OFFSET(common_serial_bus.type_revision_id),
303	 1},
304
305	{ACPI_RSC_MOVE16,
306	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
307	 AML_OFFSET(common_serial_bus.type_data_length),
308	 1},
309
310	/* Vendor data */
311
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},
316
317	{ACPI_RSC_MOVE_SERIAL_VEN,
318	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
319	 0,
320	 sizeof(struct aml_resource_i2c_serialbus)},
321
322	/* Resource Source */
323
324	{ACPI_RSC_MOVE8,
325	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
326	 AML_OFFSET(common_serial_bus.res_source_index),
327	 1},
328
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)},
333
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)},
338
339	/* I2C bus type specific */
340
341	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
342	 AML_OFFSET(i2c_serial_bus.type_specific_flags),
343	 0},
344
345	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
346	 AML_OFFSET(i2c_serial_bus.connection_speed),
347	 1},
348
349	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
350	 AML_OFFSET(i2c_serial_bus.slave_address),
351	 1},
352};
353
354/*******************************************************************************
355 *
356 * acpi_rs_convert_spi_serial_bus
357 *
358 ******************************************************************************/
359
360struct 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)},
364
365	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
366	 sizeof(struct aml_resource_spi_serialbus),
367	 0},
368
369	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
370	 AML_OFFSET(common_serial_bus.revision_id),
371	 1},
372
373	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
374	 AML_OFFSET(common_serial_bus.type),
375	 1},
376
377	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
378	 AML_OFFSET(common_serial_bus.flags),
379	 0},
380
381	{ACPI_RSC_1BITFLAG,
382	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
383	 AML_OFFSET(common_serial_bus.flags),
384	 1},
385
386	{ACPI_RSC_1BITFLAG,
387	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
388	 AML_OFFSET(common_serial_bus.flags),
389	 2},
390
391	{ACPI_RSC_MOVE8,
392	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
393	 AML_OFFSET(common_serial_bus.type_revision_id),
394	 1},
395
396	{ACPI_RSC_MOVE16,
397	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
398	 AML_OFFSET(common_serial_bus.type_data_length),
399	 1},
400
401	/* Vendor data */
402
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},
407
408	{ACPI_RSC_MOVE_SERIAL_VEN,
409	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
410	 0,
411	 sizeof(struct aml_resource_spi_serialbus)},
412
413	/* Resource Source */
414
415	{ACPI_RSC_MOVE8,
416	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
417	 AML_OFFSET(common_serial_bus.res_source_index),
418	 1},
419
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)},
424
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)},
429
430	/* Spi bus type specific  */
431
432	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
433	 AML_OFFSET(spi_serial_bus.type_specific_flags),
434	 0},
435
436	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
437	 AML_OFFSET(spi_serial_bus.type_specific_flags),
438	 1},
439
440	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
441	 AML_OFFSET(spi_serial_bus.data_bit_length),
442	 1},
443
444	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
445	 AML_OFFSET(spi_serial_bus.clock_phase),
446	 1},
447
448	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
449	 AML_OFFSET(spi_serial_bus.clock_polarity),
450	 1},
451
452	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
453	 AML_OFFSET(spi_serial_bus.device_selection),
454	 1},
455
456	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
457	 AML_OFFSET(spi_serial_bus.connection_speed),
458	 1},
459};
460
461/*******************************************************************************
462 *
463 * acpi_rs_convert_uart_serial_bus
464 *
465 ******************************************************************************/
466
467struct 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)},
471
472	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
473	 sizeof(struct aml_resource_uart_serialbus),
474	 0},
475
476	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
477	 AML_OFFSET(common_serial_bus.revision_id),
478	 1},
479
480	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
481	 AML_OFFSET(common_serial_bus.type),
482	 1},
483
484	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
485	 AML_OFFSET(common_serial_bus.flags),
486	 0},
487
488	{ACPI_RSC_1BITFLAG,
489	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
490	 AML_OFFSET(common_serial_bus.flags),
491	 1},
492
493	{ACPI_RSC_1BITFLAG,
494	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
495	 AML_OFFSET(common_serial_bus.flags),
496	 2},
497
498	{ACPI_RSC_MOVE8,
499	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
500	 AML_OFFSET(common_serial_bus.type_revision_id),
501	 1},
502
503	{ACPI_RSC_MOVE16,
504	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
505	 AML_OFFSET(common_serial_bus.type_data_length),
506	 1},
507
508	/* Vendor data */
509
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},
514
515	{ACPI_RSC_MOVE_SERIAL_VEN,
516	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
517	 0,
518	 sizeof(struct aml_resource_uart_serialbus)},
519
520	/* Resource Source */
521
522	{ACPI_RSC_MOVE8,
523	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
524	 AML_OFFSET(common_serial_bus.res_source_index),
525	 1},
526
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)},
531
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)},
536
537	/* Uart bus type specific  */
538
539	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
540	 AML_OFFSET(uart_serial_bus.type_specific_flags),
541	 0},
542
543	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
544	 AML_OFFSET(uart_serial_bus.type_specific_flags),
545	 2},
546
547	{ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
548	 AML_OFFSET(uart_serial_bus.type_specific_flags),
549	 4},
550
551	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
552	 AML_OFFSET(uart_serial_bus.type_specific_flags),
553	 7},
554
555	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
556	 AML_OFFSET(uart_serial_bus.parity),
557	 1},
558
559	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
560	 AML_OFFSET(uart_serial_bus.lines_enabled),
561	 1},
562
563	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
564	 AML_OFFSET(uart_serial_bus.rx_fifo_size),
565	 1},
566
567	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
568	 AML_OFFSET(uart_serial_bus.tx_fifo_size),
569	 1},
570
571	{ACPI_RSC_MOVE32,
572	 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
573	 AML_OFFSET(uart_serial_bus.default_baud_rate),
574	 1},
575};
576
577/*******************************************************************************
578 *
579 * acpi_rs_convert_pin_config
580 *
581 ******************************************************************************/
582
583struct 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)},
587
588	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG,
589	 sizeof(struct aml_resource_pin_config),
590	 0},
591
592	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id),
593	 AML_OFFSET(pin_config.revision_id),
594	 1},
595
596	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable),
597	 AML_OFFSET(pin_config.flags),
598	 0},
599
600	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer),
601	 AML_OFFSET(pin_config.flags),
602	 1},
603
604	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type),
605	 AML_OFFSET(pin_config.pin_config_type),
606	 1},
607
608	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value),
609	 AML_OFFSET(pin_config.pin_config_value),
610	 1},
611
612	/* Pin Table */
613
614	/*
615	 * It is OK to use GPIO operations here because none of them refer GPIO
616	 * structures directly but instead use offsets given here.
617	 */
618
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)},
623
624	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table),
625	 AML_OFFSET(pin_config.pin_table_offset),
626	 0},
627
628	/* Resource Source */
629
630	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index),
631	 AML_OFFSET(pin_config.res_source_index),
632	 1},
633
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)},
638
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),
642	 0},
643
644	/* Vendor Data */
645
646	{ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length),
647	 AML_OFFSET(pin_config.vendor_length),
648	 1},
649
650	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data),
651	 AML_OFFSET(pin_config.vendor_offset),
652	 0},
653};
654
655/*******************************************************************************
656 *
657 * acpi_rs_convert_pin_group
658 *
659 ******************************************************************************/
660
661struct 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)},
665
666	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP,
667	 sizeof(struct aml_resource_pin_group),
668	 0},
669
670	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id),
671	 AML_OFFSET(pin_group.revision_id),
672	 1},
673
674	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer),
675	 AML_OFFSET(pin_group.flags),
676	 0},
677
678	/* Pin Table */
679
680	/*
681	 * It is OK to use GPIO operations here because none of them refer GPIO
682	 * structures directly but instead use offsets given here.
683	 */
684
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)},
689
690	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table),
691	 AML_OFFSET(pin_group.pin_table_offset),
692	 0},
693
694	/* Resource Label */
695
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)},
700
701	{ACPI_RSC_MOVE_GPIO_RES,
702	 ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr),
703	 AML_OFFSET(pin_group.label_offset),
704	 0},
705
706	/* Vendor Data */
707
708	{ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length),
709	 AML_OFFSET(pin_group.vendor_length),
710	 1},
711
712	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data),
713	 AML_OFFSET(pin_group.vendor_offset),
714	 0},
715};
716
717/*******************************************************************************
718 *
719 * acpi_rs_convert_pin_group_function
720 *
721 ******************************************************************************/
722
723struct 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)},
727
728	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
729	 sizeof(struct aml_resource_pin_group_function),
730	 0},
731
732	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id),
733	 AML_OFFSET(pin_group_function.revision_id),
734	 1},
735
736	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable),
737	 AML_OFFSET(pin_group_function.flags),
738	 0},
739
740	{ACPI_RSC_1BITFLAG,
741	 ACPI_RS_OFFSET(data.pin_group_function.producer_consumer),
742	 AML_OFFSET(pin_group_function.flags),
743	 1},
744
745	{ACPI_RSC_MOVE16,
746	 ACPI_RS_OFFSET(data.pin_group_function.function_number),
747	 AML_OFFSET(pin_group_function.function_number),
748	 1},
749
750	/* Resource Source */
751
752	{ACPI_RSC_MOVE8,
753	 ACPI_RS_OFFSET(data.pin_group_function.resource_source.index),
754	 AML_OFFSET(pin_group_function.res_source_index),
755	 1},
756
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)},
761
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),
765	 0},
766
767	/* Resource Source Label */
768
769	{ACPI_RSC_COUNT_GPIO_RES,
770	 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
771			string_length),
772	 AML_OFFSET(pin_group_function.res_source_label_offset),
773	 AML_OFFSET(pin_group_function.vendor_offset)},
774
775	{ACPI_RSC_MOVE_GPIO_RES,
776	 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
777			string_ptr),
778	 AML_OFFSET(pin_group_function.res_source_label_offset),
779	 0},
780
781	/* Vendor Data */
782
783	{ACPI_RSC_COUNT_GPIO_VEN,
784	 ACPI_RS_OFFSET(data.pin_group_function.vendor_length),
785	 AML_OFFSET(pin_group_function.vendor_length),
786	 1},
787
788	{ACPI_RSC_MOVE_GPIO_RES,
789	 ACPI_RS_OFFSET(data.pin_group_function.vendor_data),
790	 AML_OFFSET(pin_group_function.vendor_offset),
791	 0},
792};
793
794/*******************************************************************************
795 *
796 * acpi_rs_convert_pin_group_config
797 *
798 ******************************************************************************/
799
800struct 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)},
804
805	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
806	 sizeof(struct aml_resource_pin_group_config),
807	 0},
808
809	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id),
810	 AML_OFFSET(pin_group_config.revision_id),
811	 1},
812
813	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable),
814	 AML_OFFSET(pin_group_config.flags),
815	 0},
816
817	{ACPI_RSC_1BITFLAG,
818	 ACPI_RS_OFFSET(data.pin_group_config.producer_consumer),
819	 AML_OFFSET(pin_group_config.flags),
820	 1},
821
822	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type),
823	 AML_OFFSET(pin_group_config.pin_config_type),
824	 1},
825
826	{ACPI_RSC_MOVE32,
827	 ACPI_RS_OFFSET(data.pin_group_config.pin_config_value),
828	 AML_OFFSET(pin_group_config.pin_config_value),
829	 1},
830
831	/* Resource Source */
832
833	{ACPI_RSC_MOVE8,
834	 ACPI_RS_OFFSET(data.pin_group_config.resource_source.index),
835	 AML_OFFSET(pin_group_config.res_source_index),
836	 1},
837
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)},
842
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),
846	 0},
847
848	/* Resource Source Label */
849
850	{ACPI_RSC_COUNT_GPIO_RES,
851	 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.
852			string_length),
853	 AML_OFFSET(pin_group_config.res_source_label_offset),
854	 AML_OFFSET(pin_group_config.vendor_offset)},
855
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),
859	 0},
860
861	/* Vendor Data */
862
863	{ACPI_RSC_COUNT_GPIO_VEN,
864	 ACPI_RS_OFFSET(data.pin_group_config.vendor_length),
865	 AML_OFFSET(pin_group_config.vendor_length),
866	 1},
867
868	{ACPI_RSC_MOVE_GPIO_RES,
869	 ACPI_RS_OFFSET(data.pin_group_config.vendor_data),
870	 AML_OFFSET(pin_group_config.vendor_offset),
871	 0},
872};