xref: /OK3568_Linux_fs/kernel/drivers/acpi/acpica/rsserial.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
2*4882a593Smuzhiyun /*******************************************************************************
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Module Name: rsserial - GPIO/serial_bus resource descriptors
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  ******************************************************************************/
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include <acpi/acpi.h>
9*4882a593Smuzhiyun #include "accommon.h"
10*4882a593Smuzhiyun #include "acresrc.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define _COMPONENT          ACPI_RESOURCES
13*4882a593Smuzhiyun ACPI_MODULE_NAME("rsserial")
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /*******************************************************************************
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  * acpi_rs_convert_gpio
18*4882a593Smuzhiyun  *
19*4882a593Smuzhiyun  ******************************************************************************/
20*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_gpio[18] = {
21*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GPIO,
22*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_gpio),
23*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_gpio)},
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GPIO,
26*4882a593Smuzhiyun 	 sizeof(struct aml_resource_gpio),
27*4882a593Smuzhiyun 	 0},
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	/*
30*4882a593Smuzhiyun 	 * These fields are contiguous in both the source and destination:
31*4882a593Smuzhiyun 	 * revision_id
32*4882a593Smuzhiyun 	 * connection_type
33*4882a593Smuzhiyun 	 */
34*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.revision_id),
35*4882a593Smuzhiyun 	 AML_OFFSET(gpio.revision_id),
36*4882a593Smuzhiyun 	 2},
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.producer_consumer),
39*4882a593Smuzhiyun 	 AML_OFFSET(gpio.flags),
40*4882a593Smuzhiyun 	 0},
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.shareable),
43*4882a593Smuzhiyun 	 AML_OFFSET(gpio.int_flags),
44*4882a593Smuzhiyun 	 3},
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.wake_capable),
47*4882a593Smuzhiyun 	 AML_OFFSET(gpio.int_flags),
48*4882a593Smuzhiyun 	 4},
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun 	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.io_restriction),
51*4882a593Smuzhiyun 	 AML_OFFSET(gpio.int_flags),
52*4882a593Smuzhiyun 	 0},
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.triggering),
55*4882a593Smuzhiyun 	 AML_OFFSET(gpio.int_flags),
56*4882a593Smuzhiyun 	 0},
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun 	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.polarity),
59*4882a593Smuzhiyun 	 AML_OFFSET(gpio.int_flags),
60*4882a593Smuzhiyun 	 1},
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.pin_config),
63*4882a593Smuzhiyun 	 AML_OFFSET(gpio.pin_config),
64*4882a593Smuzhiyun 	 1},
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun 	/*
67*4882a593Smuzhiyun 	 * These fields are contiguous in both the source and destination:
68*4882a593Smuzhiyun 	 * drive_strength
69*4882a593Smuzhiyun 	 * debounce_timeout
70*4882a593Smuzhiyun 	 */
71*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.gpio.drive_strength),
72*4882a593Smuzhiyun 	 AML_OFFSET(gpio.drive_strength),
73*4882a593Smuzhiyun 	 2},
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun 	/* Pin Table */
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table_length),
78*4882a593Smuzhiyun 	 AML_OFFSET(gpio.pin_table_offset),
79*4882a593Smuzhiyun 	 AML_OFFSET(gpio.res_source_offset)},
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table),
82*4882a593Smuzhiyun 	 AML_OFFSET(gpio.pin_table_offset),
83*4882a593Smuzhiyun 	 0},
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 	/* Resource Source */
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.resource_source.index),
88*4882a593Smuzhiyun 	 AML_OFFSET(gpio.res_source_index),
89*4882a593Smuzhiyun 	 1},
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
92*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.gpio.resource_source.string_length),
93*4882a593Smuzhiyun 	 AML_OFFSET(gpio.res_source_offset),
94*4882a593Smuzhiyun 	 AML_OFFSET(gpio.vendor_offset)},
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
97*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.gpio.resource_source.string_ptr),
98*4882a593Smuzhiyun 	 AML_OFFSET(gpio.res_source_offset),
99*4882a593Smuzhiyun 	 0},
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun 	/* Vendor Data */
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.gpio.vendor_length),
104*4882a593Smuzhiyun 	 AML_OFFSET(gpio.vendor_length),
105*4882a593Smuzhiyun 	 1},
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.gpio.vendor_data),
108*4882a593Smuzhiyun 	 AML_OFFSET(gpio.vendor_offset),
109*4882a593Smuzhiyun 	 0},
110*4882a593Smuzhiyun };
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun /*******************************************************************************
113*4882a593Smuzhiyun  *
114*4882a593Smuzhiyun  * acpi_rs_convert_pinfunction
115*4882a593Smuzhiyun  *
116*4882a593Smuzhiyun  ******************************************************************************/
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_function[13] = {
119*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_FUNCTION,
120*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_pin_function),
121*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_function)},
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_FUNCTION,
124*4882a593Smuzhiyun 	 sizeof(struct aml_resource_pin_function),
125*4882a593Smuzhiyun 	 0},
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.revision_id),
128*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.revision_id),
129*4882a593Smuzhiyun 	 1},
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_function.shareable),
132*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.flags),
133*4882a593Smuzhiyun 	 0},
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_function.pin_config),
136*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.pin_config),
137*4882a593Smuzhiyun 	 1},
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.pin_function.function_number),
140*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.function_number),
141*4882a593Smuzhiyun 	 2},
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun 	/* Pin Table */
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun 	/*
146*4882a593Smuzhiyun 	 * It is OK to use GPIO operations here because none of them refer GPIO
147*4882a593Smuzhiyun 	 * structures directly but instead use offsets given here.
148*4882a593Smuzhiyun 	 */
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_PIN,
151*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_function.pin_table_length),
152*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.pin_table_offset),
153*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.res_source_offset)},
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_function.pin_table),
156*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.pin_table_offset),
157*4882a593Smuzhiyun 	 0},
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun 	/* Resource Source */
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
162*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_function.resource_source.index),
163*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.res_source_index),
164*4882a593Smuzhiyun 	 1},
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
167*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_function.resource_source.string_length),
168*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.res_source_offset),
169*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.vendor_offset)},
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
172*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_function.resource_source.string_ptr),
173*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.res_source_offset),
174*4882a593Smuzhiyun 	 0},
175*4882a593Smuzhiyun 
176*4882a593Smuzhiyun 	/* Vendor Data */
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN,
179*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_function.vendor_length),
180*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.vendor_length),
181*4882a593Smuzhiyun 	 1},
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_function.vendor_data),
184*4882a593Smuzhiyun 	 AML_OFFSET(pin_function.vendor_offset),
185*4882a593Smuzhiyun 	 0},
186*4882a593Smuzhiyun };
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun /*******************************************************************************
189*4882a593Smuzhiyun  *
190*4882a593Smuzhiyun  * acpi_rs_convert_i2c_serial_bus
191*4882a593Smuzhiyun  *
192*4882a593Smuzhiyun  ******************************************************************************/
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[17] = {
195*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
196*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
197*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus)},
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
200*4882a593Smuzhiyun 	 sizeof(struct aml_resource_i2c_serialbus),
201*4882a593Smuzhiyun 	 0},
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
204*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.revision_id),
205*4882a593Smuzhiyun 	 1},
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
208*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type),
209*4882a593Smuzhiyun 	 1},
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
212*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
213*4882a593Smuzhiyun 	 0},
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
216*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
217*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
218*4882a593Smuzhiyun 	 1},
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
221*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
222*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
223*4882a593Smuzhiyun 	 2},
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
226*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
227*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_revision_id),
228*4882a593Smuzhiyun 	 1},
229*4882a593Smuzhiyun 
230*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16,
231*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
232*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
233*4882a593Smuzhiyun 	 1},
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun 	/* Vendor data */
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_VEN,
238*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
239*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
240*4882a593Smuzhiyun 	 AML_RESOURCE_I2C_MIN_DATA_LEN},
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_VEN,
243*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
244*4882a593Smuzhiyun 	 0,
245*4882a593Smuzhiyun 	 sizeof(struct aml_resource_i2c_serialbus)},
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun 	/* Resource Source */
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
250*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
251*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.res_source_index),
252*4882a593Smuzhiyun 	 1},
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_RES,
255*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
256*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
257*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_RES,
260*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
261*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
262*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun 	/* I2C bus type specific */
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
267*4882a593Smuzhiyun 	 AML_OFFSET(i2c_serial_bus.type_specific_flags),
268*4882a593Smuzhiyun 	 0},
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun 	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
271*4882a593Smuzhiyun 	 AML_OFFSET(i2c_serial_bus.connection_speed),
272*4882a593Smuzhiyun 	 1},
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
275*4882a593Smuzhiyun 	 AML_OFFSET(i2c_serial_bus.slave_address),
276*4882a593Smuzhiyun 	 1},
277*4882a593Smuzhiyun };
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun /*******************************************************************************
280*4882a593Smuzhiyun  *
281*4882a593Smuzhiyun  * acpi_rs_convert_spi_serial_bus
282*4882a593Smuzhiyun  *
283*4882a593Smuzhiyun  ******************************************************************************/
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[21] = {
286*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
287*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
288*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus)},
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
291*4882a593Smuzhiyun 	 sizeof(struct aml_resource_spi_serialbus),
292*4882a593Smuzhiyun 	 0},
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
295*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.revision_id),
296*4882a593Smuzhiyun 	 1},
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
299*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type),
300*4882a593Smuzhiyun 	 1},
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
303*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
304*4882a593Smuzhiyun 	 0},
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
307*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
308*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
309*4882a593Smuzhiyun 	 1},
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
312*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
313*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
314*4882a593Smuzhiyun 	 2},
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
317*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
318*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_revision_id),
319*4882a593Smuzhiyun 	 1},
320*4882a593Smuzhiyun 
321*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16,
322*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
323*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
324*4882a593Smuzhiyun 	 1},
325*4882a593Smuzhiyun 
326*4882a593Smuzhiyun 	/* Vendor data */
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_VEN,
329*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
330*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
331*4882a593Smuzhiyun 	 AML_RESOURCE_SPI_MIN_DATA_LEN},
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_VEN,
334*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
335*4882a593Smuzhiyun 	 0,
336*4882a593Smuzhiyun 	 sizeof(struct aml_resource_spi_serialbus)},
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun 	/* Resource Source */
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
341*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
342*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.res_source_index),
343*4882a593Smuzhiyun 	 1},
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_RES,
346*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
347*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
348*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
349*4882a593Smuzhiyun 
350*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_RES,
351*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
352*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
353*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
354*4882a593Smuzhiyun 
355*4882a593Smuzhiyun 	/* Spi bus type specific  */
356*4882a593Smuzhiyun 
357*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
358*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.type_specific_flags),
359*4882a593Smuzhiyun 	 0},
360*4882a593Smuzhiyun 
361*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
362*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.type_specific_flags),
363*4882a593Smuzhiyun 	 1},
364*4882a593Smuzhiyun 
365*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
366*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.data_bit_length),
367*4882a593Smuzhiyun 	 1},
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
370*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.clock_phase),
371*4882a593Smuzhiyun 	 1},
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
374*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.clock_polarity),
375*4882a593Smuzhiyun 	 1},
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
378*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.device_selection),
379*4882a593Smuzhiyun 	 1},
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun 	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
382*4882a593Smuzhiyun 	 AML_OFFSET(spi_serial_bus.connection_speed),
383*4882a593Smuzhiyun 	 1},
384*4882a593Smuzhiyun };
385*4882a593Smuzhiyun 
386*4882a593Smuzhiyun /*******************************************************************************
387*4882a593Smuzhiyun  *
388*4882a593Smuzhiyun  * acpi_rs_convert_uart_serial_bus
389*4882a593Smuzhiyun  *
390*4882a593Smuzhiyun  ******************************************************************************/
391*4882a593Smuzhiyun 
392*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[23] = {
393*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
394*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
395*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus)},
396*4882a593Smuzhiyun 
397*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
398*4882a593Smuzhiyun 	 sizeof(struct aml_resource_uart_serialbus),
399*4882a593Smuzhiyun 	 0},
400*4882a593Smuzhiyun 
401*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
402*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.revision_id),
403*4882a593Smuzhiyun 	 1},
404*4882a593Smuzhiyun 
405*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
406*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type),
407*4882a593Smuzhiyun 	 1},
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
410*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
411*4882a593Smuzhiyun 	 0},
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
414*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
415*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
416*4882a593Smuzhiyun 	 1},
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
419*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.connection_sharing),
420*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.flags),
421*4882a593Smuzhiyun 	 2},
422*4882a593Smuzhiyun 
423*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
424*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
425*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_revision_id),
426*4882a593Smuzhiyun 	 1},
427*4882a593Smuzhiyun 
428*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16,
429*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
430*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
431*4882a593Smuzhiyun 	 1},
432*4882a593Smuzhiyun 
433*4882a593Smuzhiyun 	/* Vendor data */
434*4882a593Smuzhiyun 
435*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_VEN,
436*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
437*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
438*4882a593Smuzhiyun 	 AML_RESOURCE_UART_MIN_DATA_LEN},
439*4882a593Smuzhiyun 
440*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_VEN,
441*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
442*4882a593Smuzhiyun 	 0,
443*4882a593Smuzhiyun 	 sizeof(struct aml_resource_uart_serialbus)},
444*4882a593Smuzhiyun 
445*4882a593Smuzhiyun 	/* Resource Source */
446*4882a593Smuzhiyun 
447*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
448*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
449*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.res_source_index),
450*4882a593Smuzhiyun 	 1},
451*4882a593Smuzhiyun 
452*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_SERIAL_RES,
453*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
454*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
455*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
456*4882a593Smuzhiyun 
457*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_SERIAL_RES,
458*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
459*4882a593Smuzhiyun 	 AML_OFFSET(common_serial_bus.type_data_length),
460*4882a593Smuzhiyun 	 sizeof(struct aml_resource_common_serialbus)},
461*4882a593Smuzhiyun 
462*4882a593Smuzhiyun 	/* Uart bus type specific  */
463*4882a593Smuzhiyun 
464*4882a593Smuzhiyun 	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
465*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.type_specific_flags),
466*4882a593Smuzhiyun 	 0},
467*4882a593Smuzhiyun 
468*4882a593Smuzhiyun 	{ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
469*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.type_specific_flags),
470*4882a593Smuzhiyun 	 2},
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun 	{ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
473*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.type_specific_flags),
474*4882a593Smuzhiyun 	 4},
475*4882a593Smuzhiyun 
476*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
477*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.type_specific_flags),
478*4882a593Smuzhiyun 	 7},
479*4882a593Smuzhiyun 
480*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
481*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.parity),
482*4882a593Smuzhiyun 	 1},
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
485*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.lines_enabled),
486*4882a593Smuzhiyun 	 1},
487*4882a593Smuzhiyun 
488*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
489*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.rx_fifo_size),
490*4882a593Smuzhiyun 	 1},
491*4882a593Smuzhiyun 
492*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
493*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.tx_fifo_size),
494*4882a593Smuzhiyun 	 1},
495*4882a593Smuzhiyun 
496*4882a593Smuzhiyun 	{ACPI_RSC_MOVE32,
497*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
498*4882a593Smuzhiyun 	 AML_OFFSET(uart_serial_bus.default_baud_rate),
499*4882a593Smuzhiyun 	 1},
500*4882a593Smuzhiyun };
501*4882a593Smuzhiyun 
502*4882a593Smuzhiyun /*******************************************************************************
503*4882a593Smuzhiyun  *
504*4882a593Smuzhiyun  * acpi_rs_convert_pin_config
505*4882a593Smuzhiyun  *
506*4882a593Smuzhiyun  ******************************************************************************/
507*4882a593Smuzhiyun 
508*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_config[14] = {
509*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_CONFIG,
510*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_pin_config),
511*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_config)},
512*4882a593Smuzhiyun 
513*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_CONFIG,
514*4882a593Smuzhiyun 	 sizeof(struct aml_resource_pin_config),
515*4882a593Smuzhiyun 	 0},
516*4882a593Smuzhiyun 
517*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.revision_id),
518*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.revision_id),
519*4882a593Smuzhiyun 	 1},
520*4882a593Smuzhiyun 
521*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.shareable),
522*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.flags),
523*4882a593Smuzhiyun 	 0},
524*4882a593Smuzhiyun 
525*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_config.producer_consumer),
526*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.flags),
527*4882a593Smuzhiyun 	 1},
528*4882a593Smuzhiyun 
529*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.pin_config_type),
530*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.pin_config_type),
531*4882a593Smuzhiyun 	 1},
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun 	{ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.pin_config.pin_config_value),
534*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.pin_config_value),
535*4882a593Smuzhiyun 	 1},
536*4882a593Smuzhiyun 
537*4882a593Smuzhiyun 	/* Pin Table */
538*4882a593Smuzhiyun 
539*4882a593Smuzhiyun 	/*
540*4882a593Smuzhiyun 	 * It is OK to use GPIO operations here because none of them refer GPIO
541*4882a593Smuzhiyun 	 * structures directly but instead use offsets given here.
542*4882a593Smuzhiyun 	 */
543*4882a593Smuzhiyun 
544*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_PIN,
545*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_config.pin_table_length),
546*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.pin_table_offset),
547*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.res_source_offset)},
548*4882a593Smuzhiyun 
549*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_config.pin_table),
550*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.pin_table_offset),
551*4882a593Smuzhiyun 	 0},
552*4882a593Smuzhiyun 
553*4882a593Smuzhiyun 	/* Resource Source */
554*4882a593Smuzhiyun 
555*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_config.resource_source.index),
556*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.res_source_index),
557*4882a593Smuzhiyun 	 1},
558*4882a593Smuzhiyun 
559*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
560*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_config.resource_source.string_length),
561*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.res_source_offset),
562*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.vendor_offset)},
563*4882a593Smuzhiyun 
564*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
565*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_config.resource_source.string_ptr),
566*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.res_source_offset),
567*4882a593Smuzhiyun 	 0},
568*4882a593Smuzhiyun 
569*4882a593Smuzhiyun 	/* Vendor Data */
570*4882a593Smuzhiyun 
571*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_config.vendor_length),
572*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.vendor_length),
573*4882a593Smuzhiyun 	 1},
574*4882a593Smuzhiyun 
575*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_config.vendor_data),
576*4882a593Smuzhiyun 	 AML_OFFSET(pin_config.vendor_offset),
577*4882a593Smuzhiyun 	 0},
578*4882a593Smuzhiyun };
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun /*******************************************************************************
581*4882a593Smuzhiyun  *
582*4882a593Smuzhiyun  * acpi_rs_convert_pin_group
583*4882a593Smuzhiyun  *
584*4882a593Smuzhiyun  ******************************************************************************/
585*4882a593Smuzhiyun 
586*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group[10] = {
587*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP,
588*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_pin_group),
589*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group)},
590*4882a593Smuzhiyun 
591*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP,
592*4882a593Smuzhiyun 	 sizeof(struct aml_resource_pin_group),
593*4882a593Smuzhiyun 	 0},
594*4882a593Smuzhiyun 
595*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group.revision_id),
596*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.revision_id),
597*4882a593Smuzhiyun 	 1},
598*4882a593Smuzhiyun 
599*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group.producer_consumer),
600*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.flags),
601*4882a593Smuzhiyun 	 0},
602*4882a593Smuzhiyun 
603*4882a593Smuzhiyun 	/* Pin Table */
604*4882a593Smuzhiyun 
605*4882a593Smuzhiyun 	/*
606*4882a593Smuzhiyun 	 * It is OK to use GPIO operations here because none of them refer GPIO
607*4882a593Smuzhiyun 	 * structures directly but instead use offsets given here.
608*4882a593Smuzhiyun 	 */
609*4882a593Smuzhiyun 
610*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_PIN,
611*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group.pin_table_length),
612*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.pin_table_offset),
613*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.label_offset)},
614*4882a593Smuzhiyun 
615*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.pin_group.pin_table),
616*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.pin_table_offset),
617*4882a593Smuzhiyun 	 0},
618*4882a593Smuzhiyun 
619*4882a593Smuzhiyun 	/* Resource Label */
620*4882a593Smuzhiyun 
621*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
622*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group.resource_label.string_length),
623*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.label_offset),
624*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.vendor_offset)},
625*4882a593Smuzhiyun 
626*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
627*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group.resource_label.string_ptr),
628*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.label_offset),
629*4882a593Smuzhiyun 	 0},
630*4882a593Smuzhiyun 
631*4882a593Smuzhiyun 	/* Vendor Data */
632*4882a593Smuzhiyun 
633*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.pin_group.vendor_length),
634*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.vendor_length),
635*4882a593Smuzhiyun 	 1},
636*4882a593Smuzhiyun 
637*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.pin_group.vendor_data),
638*4882a593Smuzhiyun 	 AML_OFFSET(pin_group.vendor_offset),
639*4882a593Smuzhiyun 	 0},
640*4882a593Smuzhiyun };
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun /*******************************************************************************
643*4882a593Smuzhiyun  *
644*4882a593Smuzhiyun  * acpi_rs_convert_pin_group_function
645*4882a593Smuzhiyun  *
646*4882a593Smuzhiyun  ******************************************************************************/
647*4882a593Smuzhiyun 
648*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group_function[13] = {
649*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION,
650*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_pin_group_function),
651*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_function)},
652*4882a593Smuzhiyun 
653*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION,
654*4882a593Smuzhiyun 	 sizeof(struct aml_resource_pin_group_function),
655*4882a593Smuzhiyun 	 0},
656*4882a593Smuzhiyun 
657*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_function.revision_id),
658*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.revision_id),
659*4882a593Smuzhiyun 	 1},
660*4882a593Smuzhiyun 
661*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_function.shareable),
662*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.flags),
663*4882a593Smuzhiyun 	 0},
664*4882a593Smuzhiyun 
665*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
666*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.producer_consumer),
667*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.flags),
668*4882a593Smuzhiyun 	 1},
669*4882a593Smuzhiyun 
670*4882a593Smuzhiyun 	{ACPI_RSC_MOVE16,
671*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.function_number),
672*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.function_number),
673*4882a593Smuzhiyun 	 1},
674*4882a593Smuzhiyun 
675*4882a593Smuzhiyun 	/* Resource Source */
676*4882a593Smuzhiyun 
677*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
678*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.resource_source.index),
679*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_index),
680*4882a593Smuzhiyun 	 1},
681*4882a593Smuzhiyun 
682*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
683*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_length),
684*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_offset),
685*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_label_offset)},
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
688*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.resource_source.string_ptr),
689*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_offset),
690*4882a593Smuzhiyun 	 0},
691*4882a593Smuzhiyun 
692*4882a593Smuzhiyun 	/* Resource Source Label */
693*4882a593Smuzhiyun 
694*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
695*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
696*4882a593Smuzhiyun 			string_length),
697*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_label_offset),
698*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.vendor_offset)},
699*4882a593Smuzhiyun 
700*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
701*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.resource_source_label.
702*4882a593Smuzhiyun 			string_ptr),
703*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.res_source_label_offset),
704*4882a593Smuzhiyun 	 0},
705*4882a593Smuzhiyun 
706*4882a593Smuzhiyun 	/* Vendor Data */
707*4882a593Smuzhiyun 
708*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN,
709*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.vendor_length),
710*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.vendor_length),
711*4882a593Smuzhiyun 	 1},
712*4882a593Smuzhiyun 
713*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
714*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_function.vendor_data),
715*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_function.vendor_offset),
716*4882a593Smuzhiyun 	 0},
717*4882a593Smuzhiyun };
718*4882a593Smuzhiyun 
719*4882a593Smuzhiyun /*******************************************************************************
720*4882a593Smuzhiyun  *
721*4882a593Smuzhiyun  * acpi_rs_convert_pin_group_config
722*4882a593Smuzhiyun  *
723*4882a593Smuzhiyun  ******************************************************************************/
724*4882a593Smuzhiyun 
725*4882a593Smuzhiyun struct acpi_rsconvert_info acpi_rs_convert_pin_group_config[14] = {
726*4882a593Smuzhiyun 	{ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG,
727*4882a593Smuzhiyun 	 ACPI_RS_SIZE(struct acpi_resource_pin_group_config),
728*4882a593Smuzhiyun 	 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_pin_group_config)},
729*4882a593Smuzhiyun 
730*4882a593Smuzhiyun 	{ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG,
731*4882a593Smuzhiyun 	 sizeof(struct aml_resource_pin_group_config),
732*4882a593Smuzhiyun 	 0},
733*4882a593Smuzhiyun 
734*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.revision_id),
735*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.revision_id),
736*4882a593Smuzhiyun 	 1},
737*4882a593Smuzhiyun 
738*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.pin_group_config.shareable),
739*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.flags),
740*4882a593Smuzhiyun 	 0},
741*4882a593Smuzhiyun 
742*4882a593Smuzhiyun 	{ACPI_RSC_1BITFLAG,
743*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.producer_consumer),
744*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.flags),
745*4882a593Smuzhiyun 	 1},
746*4882a593Smuzhiyun 
747*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.pin_group_config.pin_config_type),
748*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.pin_config_type),
749*4882a593Smuzhiyun 	 1},
750*4882a593Smuzhiyun 
751*4882a593Smuzhiyun 	{ACPI_RSC_MOVE32,
752*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.pin_config_value),
753*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.pin_config_value),
754*4882a593Smuzhiyun 	 1},
755*4882a593Smuzhiyun 
756*4882a593Smuzhiyun 	/* Resource Source */
757*4882a593Smuzhiyun 
758*4882a593Smuzhiyun 	{ACPI_RSC_MOVE8,
759*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.resource_source.index),
760*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_index),
761*4882a593Smuzhiyun 	 1},
762*4882a593Smuzhiyun 
763*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
764*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_length),
765*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_offset),
766*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_label_offset)},
767*4882a593Smuzhiyun 
768*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
769*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.resource_source.string_ptr),
770*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_offset),
771*4882a593Smuzhiyun 	 0},
772*4882a593Smuzhiyun 
773*4882a593Smuzhiyun 	/* Resource Source Label */
774*4882a593Smuzhiyun 
775*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_RES,
776*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.
777*4882a593Smuzhiyun 			string_length),
778*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_label_offset),
779*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.vendor_offset)},
780*4882a593Smuzhiyun 
781*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
782*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.resource_source_label.string_ptr),
783*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.res_source_label_offset),
784*4882a593Smuzhiyun 	 0},
785*4882a593Smuzhiyun 
786*4882a593Smuzhiyun 	/* Vendor Data */
787*4882a593Smuzhiyun 
788*4882a593Smuzhiyun 	{ACPI_RSC_COUNT_GPIO_VEN,
789*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.vendor_length),
790*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.vendor_length),
791*4882a593Smuzhiyun 	 1},
792*4882a593Smuzhiyun 
793*4882a593Smuzhiyun 	{ACPI_RSC_MOVE_GPIO_RES,
794*4882a593Smuzhiyun 	 ACPI_RS_OFFSET(data.pin_group_config.vendor_data),
795*4882a593Smuzhiyun 	 AML_OFFSET(pin_group_config.vendor_offset),
796*4882a593Smuzhiyun 	 0},
797*4882a593Smuzhiyun };
798