2018-03-15 02:13:07 +03:00
// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
2011-11-16 10:38:13 +04:00
/*******************************************************************************
*
* Module Name : rsserial - GPIO / serial_bus resource descriptors
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <acpi/acpi.h>
# include "accommon.h"
# include "acresrc.h"
# define _COMPONENT ACPI_RESOURCES
ACPI_MODULE_NAME ( " rsserial " )
/*******************************************************************************
*
* acpi_rs_convert_gpio
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2012-12-31 04:07:31 +04:00
struct acpi_rsconvert_info acpi_rs_convert_gpio [ 18 ] = {
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_GPIO ,
ACPI_RS_SIZE ( struct acpi_resource_gpio ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_gpio ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_GPIO ,
sizeof ( struct aml_resource_gpio ) ,
0 } ,
/*
* These fields are contiguous in both the source and destination :
* revision_id
* connection_type
*/
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . gpio . revision_id ) ,
AML_OFFSET ( gpio . revision_id ) ,
2 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . gpio . producer_consumer ) ,
AML_OFFSET ( gpio . flags ) ,
0 } ,
2019-02-16 00:36:19 +03:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . gpio . shareable ) ,
2011-11-16 10:38:13 +04:00
AML_OFFSET ( gpio . int_flags ) ,
3 } ,
2012-12-31 04:07:31 +04:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . gpio . wake_capable ) ,
AML_OFFSET ( gpio . int_flags ) ,
4 } ,
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . gpio . io_restriction ) ,
AML_OFFSET ( gpio . int_flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . gpio . triggering ) ,
AML_OFFSET ( gpio . int_flags ) ,
0 } ,
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . gpio . polarity ) ,
AML_OFFSET ( gpio . int_flags ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . gpio . pin_config ) ,
AML_OFFSET ( gpio . pin_config ) ,
1 } ,
/*
* These fields are contiguous in both the source and destination :
* drive_strength
* debounce_timeout
*/
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . gpio . drive_strength ) ,
AML_OFFSET ( gpio . drive_strength ) ,
2 } ,
/* Pin Table */
{ ACPI_RSC_COUNT_GPIO_PIN , ACPI_RS_OFFSET ( data . gpio . pin_table_length ) ,
AML_OFFSET ( gpio . pin_table_offset ) ,
AML_OFFSET ( gpio . res_source_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_PIN , ACPI_RS_OFFSET ( data . gpio . pin_table ) ,
AML_OFFSET ( gpio . pin_table_offset ) ,
0 } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . gpio . resource_source . index ) ,
AML_OFFSET ( gpio . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . gpio . resource_source . string_length ) ,
AML_OFFSET ( gpio . res_source_offset ) ,
AML_OFFSET ( gpio . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . gpio . resource_source . string_ptr ) ,
AML_OFFSET ( gpio . res_source_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN , ACPI_RS_OFFSET ( data . gpio . vendor_length ) ,
AML_OFFSET ( gpio . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES , ACPI_RS_OFFSET ( data . gpio . vendor_data ) ,
AML_OFFSET ( gpio . vendor_offset ) ,
0 } ,
} ;
2023-04-05 16:39:23 +03:00
/*******************************************************************************
*
* acpi_rs_convert_clock_input
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_clock_input [ 8 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_CLOCK_INPUT ,
ACPI_RS_SIZE ( struct acpi_resource_clock_input ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_clock_input ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_CLOCK_INPUT ,
sizeof ( struct aml_resource_clock_input ) ,
0 }
,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . clock_input . revision_id ) ,
AML_OFFSET ( clock_input . revision_id ) ,
1 }
,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . clock_input . mode ) ,
AML_OFFSET ( clock_input . flags ) ,
0 }
,
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . clock_input . scale ) ,
AML_OFFSET ( clock_input . flags ) ,
1 }
,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . clock_input . frequency_divisor ) ,
AML_OFFSET ( clock_input . frequency_divisor ) ,
2 }
,
{ ACPI_RSC_MOVE32 , ACPI_RS_OFFSET ( data . clock_input . frequency_numerator ) ,
AML_OFFSET ( clock_input . frequency_numerator ) ,
4 }
,
/* Resource Source */
{ ACPI_RSC_SOURCE , ACPI_RS_OFFSET ( data . clock_input . resource_source ) ,
0 ,
sizeof ( struct aml_resource_clock_input ) }
,
} ;
2017-06-05 11:39:14 +03:00
/*******************************************************************************
*
* acpi_rs_convert_pinfunction
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_pin_function [ 13 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_PIN_FUNCTION ,
ACPI_RS_SIZE ( struct acpi_resource_pin_function ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_pin_function ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_PIN_FUNCTION ,
sizeof ( struct aml_resource_pin_function ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_function . revision_id ) ,
AML_OFFSET ( pin_function . revision_id ) ,
1 } ,
2019-02-16 00:36:19 +03:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_function . shareable ) ,
2017-06-05 11:39:14 +03:00
AML_OFFSET ( pin_function . flags ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_function . pin_config ) ,
AML_OFFSET ( pin_function . pin_config ) ,
1 } ,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . pin_function . function_number ) ,
AML_OFFSET ( pin_function . function_number ) ,
2 } ,
/* Pin Table */
/*
* It is OK to use GPIO operations here because none of them refer GPIO
* structures directly but instead use offsets given here .
*/
{ ACPI_RSC_COUNT_GPIO_PIN ,
ACPI_RS_OFFSET ( data . pin_function . pin_table_length ) ,
AML_OFFSET ( pin_function . pin_table_offset ) ,
AML_OFFSET ( pin_function . res_source_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_PIN , ACPI_RS_OFFSET ( data . pin_function . pin_table ) ,
AML_OFFSET ( pin_function . pin_table_offset ) ,
0 } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . pin_function . resource_source . index ) ,
AML_OFFSET ( pin_function . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_function . resource_source . string_length ) ,
AML_OFFSET ( pin_function . res_source_offset ) ,
AML_OFFSET ( pin_function . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_function . resource_source . string_ptr ) ,
AML_OFFSET ( pin_function . res_source_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN ,
ACPI_RS_OFFSET ( data . pin_function . vendor_length ) ,
AML_OFFSET ( pin_function . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES , ACPI_RS_OFFSET ( data . pin_function . vendor_data ) ,
AML_OFFSET ( pin_function . vendor_offset ) ,
0 } ,
} ;
2021-04-07 00:30:22 +03:00
/*******************************************************************************
*
* acpi_rs_convert_csi2_serial_bus
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_csi2_serial_bus [ 14 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_SERIAL_BUS ,
ACPI_RS_SIZE ( struct acpi_resource_csi2_serialbus ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_csi2_serial_bus ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_SERIAL_BUS ,
sizeof ( struct aml_resource_csi2_serialbus ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . revision_id ) ,
AML_OFFSET ( common_serial_bus . revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . csi2_serial_bus . type ) ,
AML_OFFSET ( csi2_serial_bus . type ) ,
1 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . producer_consumer ) ,
AML_OFFSET ( csi2_serial_bus . flags ) ,
1 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . csi2_serial_bus . slave_mode ) ,
AML_OFFSET ( csi2_serial_bus . flags ) ,
0 } ,
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . csi2_serial_bus . phy_type ) ,
AML_OFFSET ( csi2_serial_bus . type_specific_flags ) ,
0 } ,
{ ACPI_RSC_6BITFLAG ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . local_port_instance ) ,
AML_OFFSET ( csi2_serial_bus . type_specific_flags ) ,
2 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . csi2_serial_bus . type_revision_id ) ,
AML_OFFSET ( csi2_serial_bus . type_revision_id ) ,
1 } ,
/* Vendor data */
{ ACPI_RSC_COUNT_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . vendor_length ) ,
AML_OFFSET ( csi2_serial_bus . type_data_length ) ,
AML_RESOURCE_CSI2_MIN_DATA_LEN } ,
{ ACPI_RSC_MOVE_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . vendor_data ) ,
0 ,
sizeof ( struct aml_resource_csi2_serialbus ) } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . resource_source . index ) ,
AML_OFFSET ( csi2_serial_bus . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_SERIAL_RES ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . resource_source . string_length ) ,
AML_OFFSET ( csi2_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_csi2_serialbus ) } ,
{ ACPI_RSC_MOVE_SERIAL_RES ,
ACPI_RS_OFFSET ( data . csi2_serial_bus . resource_source . string_ptr ) ,
AML_OFFSET ( csi2_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_csi2_serialbus ) } ,
} ;
2011-11-16 10:38:13 +04:00
/*******************************************************************************
*
* acpi_rs_convert_i2c_serial_bus
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2016-05-05 07:58:19 +03:00
struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus [ 17 ] = {
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_SERIAL_BUS ,
ACPI_RS_SIZE ( struct acpi_resource_i2c_serialbus ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_i2c_serial_bus ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_SERIAL_BUS ,
sizeof ( struct aml_resource_i2c_serialbus ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . revision_id ) ,
AML_OFFSET ( common_serial_bus . revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . type ) ,
AML_OFFSET ( common_serial_bus . type ) ,
1 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . common_serial_bus . slave_mode ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . producer_consumer ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
1 } ,
2016-05-05 07:58:19 +03:00
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . connection_sharing ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
2 } ,
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_revision_id ) ,
AML_OFFSET ( common_serial_bus . type_revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE16 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_data_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
1 } ,
/* Vendor data */
{ ACPI_RSC_COUNT_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
AML_RESOURCE_I2C_MIN_DATA_LEN } ,
{ ACPI_RSC_MOVE_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_data ) ,
0 ,
sizeof ( struct aml_resource_i2c_serialbus ) } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . index ) ,
AML_OFFSET ( common_serial_bus . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
{ ACPI_RSC_MOVE_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_ptr ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
/* I2C bus type specific */
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . i2c_serial_bus . access_mode ) ,
AML_OFFSET ( i2c_serial_bus . type_specific_flags ) ,
0 } ,
{ ACPI_RSC_MOVE32 , ACPI_RS_OFFSET ( data . i2c_serial_bus . connection_speed ) ,
AML_OFFSET ( i2c_serial_bus . connection_speed ) ,
1 } ,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . i2c_serial_bus . slave_address ) ,
AML_OFFSET ( i2c_serial_bus . slave_address ) ,
1 } ,
} ;
/*******************************************************************************
*
* acpi_rs_convert_spi_serial_bus
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2016-05-05 07:58:19 +03:00
struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus [ 21 ] = {
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_SERIAL_BUS ,
ACPI_RS_SIZE ( struct acpi_resource_spi_serialbus ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_spi_serial_bus ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_SERIAL_BUS ,
sizeof ( struct aml_resource_spi_serialbus ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . revision_id ) ,
AML_OFFSET ( common_serial_bus . revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . type ) ,
AML_OFFSET ( common_serial_bus . type ) ,
1 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . common_serial_bus . slave_mode ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . producer_consumer ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
1 } ,
2016-05-05 07:58:19 +03:00
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . connection_sharing ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
2 } ,
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_revision_id ) ,
AML_OFFSET ( common_serial_bus . type_revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE16 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_data_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
1 } ,
/* Vendor data */
{ ACPI_RSC_COUNT_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
AML_RESOURCE_SPI_MIN_DATA_LEN } ,
{ ACPI_RSC_MOVE_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_data ) ,
0 ,
sizeof ( struct aml_resource_spi_serialbus ) } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . index ) ,
AML_OFFSET ( common_serial_bus . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
{ ACPI_RSC_MOVE_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_ptr ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
/* Spi bus type specific */
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . spi_serial_bus . wire_mode ) ,
AML_OFFSET ( spi_serial_bus . type_specific_flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . spi_serial_bus . device_polarity ) ,
AML_OFFSET ( spi_serial_bus . type_specific_flags ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . spi_serial_bus . data_bit_length ) ,
AML_OFFSET ( spi_serial_bus . data_bit_length ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . spi_serial_bus . clock_phase ) ,
AML_OFFSET ( spi_serial_bus . clock_phase ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . spi_serial_bus . clock_polarity ) ,
AML_OFFSET ( spi_serial_bus . clock_polarity ) ,
1 } ,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . spi_serial_bus . device_selection ) ,
AML_OFFSET ( spi_serial_bus . device_selection ) ,
1 } ,
{ ACPI_RSC_MOVE32 , ACPI_RS_OFFSET ( data . spi_serial_bus . connection_speed ) ,
AML_OFFSET ( spi_serial_bus . connection_speed ) ,
1 } ,
} ;
/*******************************************************************************
*
* acpi_rs_convert_uart_serial_bus
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2016-05-05 07:58:19 +03:00
struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus [ 23 ] = {
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_SERIAL_BUS ,
ACPI_RS_SIZE ( struct acpi_resource_uart_serialbus ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_uart_serial_bus ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_SERIAL_BUS ,
sizeof ( struct aml_resource_uart_serialbus ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . revision_id ) ,
AML_OFFSET ( common_serial_bus . revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . common_serial_bus . type ) ,
AML_OFFSET ( common_serial_bus . type ) ,
1 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . common_serial_bus . slave_mode ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . producer_consumer ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
1 } ,
2016-05-05 07:58:19 +03:00
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . common_serial_bus . connection_sharing ) ,
AML_OFFSET ( common_serial_bus . flags ) ,
2 } ,
2011-11-16 10:38:13 +04:00
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_revision_id ) ,
AML_OFFSET ( common_serial_bus . type_revision_id ) ,
1 } ,
{ ACPI_RSC_MOVE16 ,
ACPI_RS_OFFSET ( data . common_serial_bus . type_data_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
1 } ,
/* Vendor data */
{ ACPI_RSC_COUNT_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
AML_RESOURCE_UART_MIN_DATA_LEN } ,
{ ACPI_RSC_MOVE_SERIAL_VEN ,
ACPI_RS_OFFSET ( data . common_serial_bus . vendor_data ) ,
0 ,
sizeof ( struct aml_resource_uart_serialbus ) } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . index ) ,
AML_OFFSET ( common_serial_bus . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_length ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
{ ACPI_RSC_MOVE_SERIAL_RES ,
ACPI_RS_OFFSET ( data . common_serial_bus . resource_source . string_ptr ) ,
AML_OFFSET ( common_serial_bus . type_data_length ) ,
sizeof ( struct aml_resource_common_serialbus ) } ,
/* Uart bus type specific */
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . uart_serial_bus . flow_control ) ,
AML_OFFSET ( uart_serial_bus . type_specific_flags ) ,
0 } ,
{ ACPI_RSC_2BITFLAG , ACPI_RS_OFFSET ( data . uart_serial_bus . stop_bits ) ,
AML_OFFSET ( uart_serial_bus . type_specific_flags ) ,
2 } ,
{ ACPI_RSC_3BITFLAG , ACPI_RS_OFFSET ( data . uart_serial_bus . data_bits ) ,
AML_OFFSET ( uart_serial_bus . type_specific_flags ) ,
4 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . uart_serial_bus . endian ) ,
AML_OFFSET ( uart_serial_bus . type_specific_flags ) ,
7 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . uart_serial_bus . parity ) ,
AML_OFFSET ( uart_serial_bus . parity ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . uart_serial_bus . lines_enabled ) ,
AML_OFFSET ( uart_serial_bus . lines_enabled ) ,
1 } ,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . uart_serial_bus . rx_fifo_size ) ,
AML_OFFSET ( uart_serial_bus . rx_fifo_size ) ,
1 } ,
{ ACPI_RSC_MOVE16 , ACPI_RS_OFFSET ( data . uart_serial_bus . tx_fifo_size ) ,
AML_OFFSET ( uart_serial_bus . tx_fifo_size ) ,
1 } ,
{ ACPI_RSC_MOVE32 ,
ACPI_RS_OFFSET ( data . uart_serial_bus . default_baud_rate ) ,
AML_OFFSET ( uart_serial_bus . default_baud_rate ) ,
1 } ,
} ;
2017-06-05 11:39:19 +03:00
/*******************************************************************************
*
* acpi_rs_convert_pin_config
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_pin_config [ 14 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_PIN_CONFIG ,
ACPI_RS_SIZE ( struct acpi_resource_pin_config ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_pin_config ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_PIN_CONFIG ,
sizeof ( struct aml_resource_pin_config ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_config . revision_id ) ,
AML_OFFSET ( pin_config . revision_id ) ,
1 } ,
2019-02-16 00:36:19 +03:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_config . shareable ) ,
2017-06-05 11:39:19 +03:00
AML_OFFSET ( pin_config . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_config . producer_consumer ) ,
AML_OFFSET ( pin_config . flags ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_config . pin_config_type ) ,
AML_OFFSET ( pin_config . pin_config_type ) ,
1 } ,
{ ACPI_RSC_MOVE32 , ACPI_RS_OFFSET ( data . pin_config . pin_config_value ) ,
AML_OFFSET ( pin_config . pin_config_value ) ,
1 } ,
/* Pin Table */
/*
* It is OK to use GPIO operations here because none of them refer GPIO
* structures directly but instead use offsets given here .
*/
{ ACPI_RSC_COUNT_GPIO_PIN ,
ACPI_RS_OFFSET ( data . pin_config . pin_table_length ) ,
AML_OFFSET ( pin_config . pin_table_offset ) ,
AML_OFFSET ( pin_config . res_source_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_PIN , ACPI_RS_OFFSET ( data . pin_config . pin_table ) ,
AML_OFFSET ( pin_config . pin_table_offset ) ,
0 } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_config . resource_source . index ) ,
AML_OFFSET ( pin_config . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_config . resource_source . string_length ) ,
AML_OFFSET ( pin_config . res_source_offset ) ,
AML_OFFSET ( pin_config . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_config . resource_source . string_ptr ) ,
AML_OFFSET ( pin_config . res_source_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN , ACPI_RS_OFFSET ( data . pin_config . vendor_length ) ,
AML_OFFSET ( pin_config . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES , ACPI_RS_OFFSET ( data . pin_config . vendor_data ) ,
AML_OFFSET ( pin_config . vendor_offset ) ,
0 } ,
} ;
2017-06-05 11:39:25 +03:00
/*******************************************************************************
*
* acpi_rs_convert_pin_group
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_pin_group [ 10 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_PIN_GROUP ,
ACPI_RS_SIZE ( struct acpi_resource_pin_group ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_pin_group ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_PIN_GROUP ,
sizeof ( struct aml_resource_pin_group ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_group . revision_id ) ,
AML_OFFSET ( pin_group . revision_id ) ,
1 } ,
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_group . producer_consumer ) ,
AML_OFFSET ( pin_group . flags ) ,
0 } ,
/* Pin Table */
/*
* It is OK to use GPIO operations here because none of them refer GPIO
* structures directly but instead use offsets given here .
*/
{ ACPI_RSC_COUNT_GPIO_PIN ,
ACPI_RS_OFFSET ( data . pin_group . pin_table_length ) ,
AML_OFFSET ( pin_group . pin_table_offset ) ,
AML_OFFSET ( pin_group . label_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_PIN , ACPI_RS_OFFSET ( data . pin_group . pin_table ) ,
AML_OFFSET ( pin_group . pin_table_offset ) ,
0 } ,
/* Resource Label */
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group . resource_label . string_length ) ,
AML_OFFSET ( pin_group . label_offset ) ,
AML_OFFSET ( pin_group . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group . resource_label . string_ptr ) ,
AML_OFFSET ( pin_group . label_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN , ACPI_RS_OFFSET ( data . pin_group . vendor_length ) ,
AML_OFFSET ( pin_group . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES , ACPI_RS_OFFSET ( data . pin_group . vendor_data ) ,
AML_OFFSET ( pin_group . vendor_offset ) ,
0 } ,
} ;
ACPICA: ACPI 6.2: Add support for PinGroupFunction() resource
ACPICA commit bd9a745749eac7137cd23085e6bdeb322de14ea2
PinGroupFunction() is a new resource introduced with ACPI 6.2. It is
used with PinGroup() to configure specific mode for a set of pins
exposed by a GPIO controller.
The format of the resource is:
PinGroupFunction (Shared/Exclusive, FunctionNumber, ResourceSource,
ResourceSourceIndex, ResourceSourceLabel,
ResourceUsage, DescriptorName, VendorData)
The resource_source and ResourceSourceLabel fields are used to specify
the PinGroup() resource referenced by PinGroupFunction().
Device (GPIO)
{
Name (_CRS, ResourceTemplate () {
PinGroup ("group1") {2, 3}
PinGroup ("group2") {4, 5}
...
})
}
Device (I2C)
{
Name (_CRS, ResourceTemplate () {
PinGroupFunction (Exclusive, 6, "^GPIO", 0, "mygroup2")
})
}
In the above example the PinGroupFunction() references the second
PinGroup() resource (using label "mygroup2" and configures pins 4 and 5
into mode 6.
Link: https://github.com/acpica/acpica/commit/bd9a7457
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2017-06-05 11:39:31 +03:00
/*******************************************************************************
*
* acpi_rs_convert_pin_group_function
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_pin_group_function [ 13 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION ,
ACPI_RS_SIZE ( struct acpi_resource_pin_group_function ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_pin_group_function ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION ,
sizeof ( struct aml_resource_pin_group_function ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_group_function . revision_id ) ,
AML_OFFSET ( pin_group_function . revision_id ) ,
1 } ,
2019-02-16 00:36:19 +03:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_group_function . shareable ) ,
ACPICA: ACPI 6.2: Add support for PinGroupFunction() resource
ACPICA commit bd9a745749eac7137cd23085e6bdeb322de14ea2
PinGroupFunction() is a new resource introduced with ACPI 6.2. It is
used with PinGroup() to configure specific mode for a set of pins
exposed by a GPIO controller.
The format of the resource is:
PinGroupFunction (Shared/Exclusive, FunctionNumber, ResourceSource,
ResourceSourceIndex, ResourceSourceLabel,
ResourceUsage, DescriptorName, VendorData)
The resource_source and ResourceSourceLabel fields are used to specify
the PinGroup() resource referenced by PinGroupFunction().
Device (GPIO)
{
Name (_CRS, ResourceTemplate () {
PinGroup ("group1") {2, 3}
PinGroup ("group2") {4, 5}
...
})
}
Device (I2C)
{
Name (_CRS, ResourceTemplate () {
PinGroupFunction (Exclusive, 6, "^GPIO", 0, "mygroup2")
})
}
In the above example the PinGroupFunction() references the second
PinGroup() resource (using label "mygroup2" and configures pins 4 and 5
into mode 6.
Link: https://github.com/acpica/acpica/commit/bd9a7457
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2017-06-05 11:39:31 +03:00
AML_OFFSET ( pin_group_function . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . pin_group_function . producer_consumer ) ,
AML_OFFSET ( pin_group_function . flags ) ,
1 } ,
{ ACPI_RSC_MOVE16 ,
ACPI_RS_OFFSET ( data . pin_group_function . function_number ) ,
AML_OFFSET ( pin_group_function . function_number ) ,
1 } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . pin_group_function . resource_source . index ) ,
AML_OFFSET ( pin_group_function . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_function . resource_source . string_length ) ,
AML_OFFSET ( pin_group_function . res_source_offset ) ,
AML_OFFSET ( pin_group_function . res_source_label_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_function . resource_source . string_ptr ) ,
AML_OFFSET ( pin_group_function . res_source_offset ) ,
0 } ,
/* Resource Source Label */
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_function . resource_source_label .
string_length ) ,
AML_OFFSET ( pin_group_function . res_source_label_offset ) ,
AML_OFFSET ( pin_group_function . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_function . resource_source_label .
string_ptr ) ,
AML_OFFSET ( pin_group_function . res_source_label_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN ,
ACPI_RS_OFFSET ( data . pin_group_function . vendor_length ) ,
AML_OFFSET ( pin_group_function . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_function . vendor_data ) ,
AML_OFFSET ( pin_group_function . vendor_offset ) ,
0 } ,
} ;
2017-06-05 11:39:37 +03:00
/*******************************************************************************
*
* acpi_rs_convert_pin_group_config
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_rsconvert_info acpi_rs_convert_pin_group_config [ 14 ] = {
{ ACPI_RSC_INITGET , ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG ,
ACPI_RS_SIZE ( struct acpi_resource_pin_group_config ) ,
ACPI_RSC_TABLE_SIZE ( acpi_rs_convert_pin_group_config ) } ,
{ ACPI_RSC_INITSET , ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG ,
sizeof ( struct aml_resource_pin_group_config ) ,
0 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_group_config . revision_id ) ,
AML_OFFSET ( pin_group_config . revision_id ) ,
1 } ,
2019-02-16 00:36:19 +03:00
{ ACPI_RSC_1BITFLAG , ACPI_RS_OFFSET ( data . pin_group_config . shareable ) ,
2017-06-05 11:39:37 +03:00
AML_OFFSET ( pin_group_config . flags ) ,
0 } ,
{ ACPI_RSC_1BITFLAG ,
ACPI_RS_OFFSET ( data . pin_group_config . producer_consumer ) ,
AML_OFFSET ( pin_group_config . flags ) ,
1 } ,
{ ACPI_RSC_MOVE8 , ACPI_RS_OFFSET ( data . pin_group_config . pin_config_type ) ,
AML_OFFSET ( pin_group_config . pin_config_type ) ,
1 } ,
{ ACPI_RSC_MOVE32 ,
ACPI_RS_OFFSET ( data . pin_group_config . pin_config_value ) ,
AML_OFFSET ( pin_group_config . pin_config_value ) ,
1 } ,
/* Resource Source */
{ ACPI_RSC_MOVE8 ,
ACPI_RS_OFFSET ( data . pin_group_config . resource_source . index ) ,
AML_OFFSET ( pin_group_config . res_source_index ) ,
1 } ,
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_config . resource_source . string_length ) ,
AML_OFFSET ( pin_group_config . res_source_offset ) ,
AML_OFFSET ( pin_group_config . res_source_label_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_config . resource_source . string_ptr ) ,
AML_OFFSET ( pin_group_config . res_source_offset ) ,
0 } ,
/* Resource Source Label */
{ ACPI_RSC_COUNT_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_config . resource_source_label .
string_length ) ,
AML_OFFSET ( pin_group_config . res_source_label_offset ) ,
AML_OFFSET ( pin_group_config . vendor_offset ) } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_config . resource_source_label . string_ptr ) ,
AML_OFFSET ( pin_group_config . res_source_label_offset ) ,
0 } ,
/* Vendor Data */
{ ACPI_RSC_COUNT_GPIO_VEN ,
ACPI_RS_OFFSET ( data . pin_group_config . vendor_length ) ,
AML_OFFSET ( pin_group_config . vendor_length ) ,
1 } ,
{ ACPI_RSC_MOVE_GPIO_RES ,
ACPI_RS_OFFSET ( data . pin_group_config . vendor_data ) ,
AML_OFFSET ( pin_group_config . vendor_offset ) ,
0 } ,
} ;