brintos

brintos / linux-shallow public Read only

0
0
Text · 26.1 KiB · 279bfa2 Raw
922 lines · c
1// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.02/*******************************************************************************3 *4 * Module Name: rsserial - GPIO/serial_bus resource descriptors5 *6 ******************************************************************************/7 8#include <acpi/acpi.h>9#include "accommon.h"10#include "acresrc.h"11 12#define _COMPONENT          ACPI_RESOURCES13ACPI_MODULE_NAME("rsserial")14 15/*******************************************************************************16 *17 * acpi_rs_convert_gpio18 *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_id32	 * connection_type33	 */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_strength69	 * debounce_timeout70	 */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_input115 *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_pinfunction164 *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 GPIO196	 * 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_bus240 *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_bus315 *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_bus406 *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_bus513 *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_config629 *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 GPIO665	 * 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_group707 *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 GPIO731	 * 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_function769 *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_config846 *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};922