--- zzzz-none-000/linux-3.10.107/arch/arm/mach-msm/gpiomux-8x60.c 2017-06-27 09:49:32.000000000 +0000 +++ vr9-7490-729/linux-3.10.107/arch/arm/mach-msm/gpiomux-8x60.c 2021-11-10 11:53:52.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, Code Aurora Forum. All rights reserved. +/* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -8,12 +8,1724 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. */ -#include "gpiomux.h" +#include +#include +#include +#include +#include "gpiomux-8x60.h" + +static struct gpiomux_setting console_uart = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +/* The SPI configurations apply to GSBI1 and GSBI10 */ +static struct gpiomux_setting spi_active = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting spi_suspended_config = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting spi_suspended_cs_config = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +/* This I2C active configuration applies to GSBI3 and GSBI4 */ +static struct gpiomux_setting i2c_active = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting i2c_active_gsbi7 = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_12MA, + .pull = GPIOMUX_PULL_NONE, +}; + +/* This I2C suspended configuration applies to GSBI3, GSBI4 and GSBI7 */ +static struct gpiomux_setting i2c_suspended_config = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting gsbi8 = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting ps_hold = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_12MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting msm_snddev_active_config = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting msm_snddev_suspend_config = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting ebi2_a_d = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting ebi2_oe = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting ebi2_we = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting ebi2_cs2 = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting ebi2_cs3 = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) +static struct gpiomux_setting ebi2_cs4 = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; +#endif + +static struct gpiomux_setting ebi2_adv = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) +static struct gpiomux_setting usb_isp1763_actv_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting usb_isp1763_susp_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; +#endif + +static struct gpiomux_setting sdcc1_dat_0_3_cmd_actv_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_10MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc1_dat_4_7_cmd_actv_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_10MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc1_clk_actv_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting sdcc1_suspend_config = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc2_dat_0_3_cmd_actv_cfg = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_10MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc2_dat_4_7_cmd_actv_cfg = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_10MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc2_clk_actv_cfg = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting sdcc2_suspend_config = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc5_dat_0_3_cmd_actv_cfg = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_10MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting sdcc5_clk_actv_cfg = { + .func = GPIOMUX_FUNC_2, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting sdcc5_suspend_config = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting aux_pcm_active_config = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting aux_pcm_suspend_config = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting uart1dm_active = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting uart1dm_suspended = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mi2s_active_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting mi2s_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting lcdc_active_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting lcdc_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdp_vsync_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting hdmi_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdm2ap_status_active_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting mdm2ap_status_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting cam_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdm2ap_sync_active_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting mdm2ap_sync_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting tm_active = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting tm_suspended = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting tma_active = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_6MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting ts_suspended = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdp_vsync_active_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting hdmi_active_1_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting hdmi_active_2_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting hdmi_active_3_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting pmic_suspended_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting cam_active_1_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting cam_active_2_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting cam_active_3_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting cam_active_4_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting cam_active_5_cfg = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_4MA, + .pull = GPIOMUX_PULL_NONE, +}; + +#ifdef CONFIG_MSM_GSBI9_UART +static struct gpiomux_setting uart9dm_active = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA , + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting gsbi9 = { + .func = GPIOMUX_FUNC_1, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; +#endif + +static struct gpiomux_setting ap2mdm_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdm2ap_status_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting mdm2ap_vfr_active_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_UP, +}; + +static struct gpiomux_setting mdm2ap_vfr_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting mdm2ap_errfatal_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_16MA, + .pull = GPIOMUX_PULL_DOWN, +}; + +static struct gpiomux_setting ap2mdm_kpdpwr_n_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_8MA, + .pull = GPIOMUX_PULL_NONE, +}; + + +static struct gpiomux_setting mdm2ap_vddmin_active_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct gpiomux_setting mdm2ap_vddmin_suspend_cfg = { + .func = GPIOMUX_FUNC_GPIO, + .drv = GPIOMUX_DRV_2MA, + .pull = GPIOMUX_PULL_NONE, +}; + +static struct msm_gpiomux_config msm8x60_gsbi_configs[] __initdata = { + { + .gpio = 33, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 34, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 35, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_cs_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 36, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 43, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active, + }, + }, + { + .gpio = 44, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active, + }, + }, + { + .gpio = 47, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active, + }, + }, + { + .gpio = 48, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active, + }, + }, + { + .gpio = 59, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active_gsbi7, + }, + }, + { + .gpio = 60, + .settings = { + [GPIOMUX_SUSPENDED] = &i2c_suspended_config, + [GPIOMUX_ACTIVE] = &i2c_active_gsbi7, + }, + }, + { + .gpio = 64, + .settings = { + [GPIOMUX_SUSPENDED] = &gsbi8, + }, + }, + { + .gpio = 65, + .settings = { + [GPIOMUX_SUSPENDED] = &gsbi8, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_fluid_gsbi_configs[] __initdata = { + { + .gpio = 70, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 72, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_cs_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, + { + .gpio = 73, + .settings = { + [GPIOMUX_SUSPENDED] = &spi_suspended_config, + [GPIOMUX_ACTIVE] = &spi_active, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_ebi2_configs[] __initdata = { + { + .gpio = 40, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_cs2, + }, + }, + { + .gpio = 123, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 124, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 125, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 126, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 127, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 128, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 129, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 130, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) + /* ISP VDD_3V3_EN */ + { + .gpio = 132, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_cs4, + }, + }, +#endif + { + .gpio = 133, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_cs3, + }, + }, + { + .gpio = 135, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 136, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 137, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 138, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 139, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 140, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 141, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 142, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 143, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 144, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 145, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 146, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 147, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 148, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 149, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 150, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_a_d, + }, + }, + { + .gpio = 151, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_oe, + }, + }, + { + .gpio = 153, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_adv, + }, + }, + { + .gpio = 157, + .settings = { + [GPIOMUX_SUSPENDED] = &ebi2_we, + }, + }, +}; + +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) +static struct msm_gpiomux_config msm8x60_isp_usb_configs[] __initdata = { + { + .gpio = 117, + .settings = { + [GPIOMUX_ACTIVE] = &usb_isp1763_actv_cfg, + [GPIOMUX_SUSPENDED] = &usb_isp1763_susp_cfg, + }, + }, + { + .gpio = 152, + .settings = { + [GPIOMUX_ACTIVE] = &usb_isp1763_actv_cfg, + [GPIOMUX_SUSPENDED] = &usb_isp1763_susp_cfg, + }, + }, + +}; +#endif + +static struct msm_gpiomux_config msm8x60_uart_configs[] __initdata = { + { /* UARTDM_TX */ + .gpio = 53, + .settings = { + [GPIOMUX_ACTIVE] = &uart1dm_active, + [GPIOMUX_SUSPENDED] = &uart1dm_suspended, + }, + }, + { /* UARTDM_RX */ + .gpio = 54, + .settings = { + [GPIOMUX_ACTIVE] = &uart1dm_active, + [GPIOMUX_SUSPENDED] = &uart1dm_suspended, + }, + }, + { /* UARTDM_CTS */ + .gpio = 55, + .settings = { + [GPIOMUX_ACTIVE] = &uart1dm_active, + [GPIOMUX_SUSPENDED] = &uart1dm_suspended, + }, + }, + { /* UARTDM_RFR */ + .gpio = 56, + .settings = { + [GPIOMUX_ACTIVE] = &uart1dm_active, + [GPIOMUX_SUSPENDED] = &uart1dm_suspended, + }, + }, + { + .gpio = 115, + .settings = { + [GPIOMUX_SUSPENDED] = &console_uart, + }, + }, + { + .gpio = 116, + .settings = { + [GPIOMUX_SUSPENDED] = &console_uart, + }, + }, +#if !defined(CONFIG_USB_PEHCI_HCD) && !defined(CONFIG_USB_PEHCI_HCD_MODULE) + /* USB ISP1763 may also use 117 GPIO */ + { + .gpio = 117, + .settings = { + [GPIOMUX_SUSPENDED] = &console_uart, + }, + }, +#endif + { + .gpio = 118, + .settings = { + [GPIOMUX_SUSPENDED] = &console_uart, + }, + }, +}; + +#ifdef CONFIG_MSM_GSBI9_UART +static struct msm_gpiomux_config msm8x60_charm_uart_configs[] __initdata = { + { /* UART9DM RX */ + .gpio = 66, + .settings = { + [GPIOMUX_ACTIVE] = &uart9dm_active, + [GPIOMUX_SUSPENDED] = &gsbi9, + }, + }, + { /* UART9DM TX */ + .gpio = 67, + .settings = { + [GPIOMUX_ACTIVE] = &uart9dm_active, + [GPIOMUX_SUSPENDED] = &gsbi9, + }, + }, +}; +#endif + +static struct msm_gpiomux_config msm8x60_ts_configs[] __initdata = { + { + /* TS_ATTN */ + .gpio = 58, + .settings = { + [GPIOMUX_SUSPENDED] = &ts_suspended, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_tmg200_configs[] __initdata = { + { + .gpio = 61, + .settings = { + [GPIOMUX_ACTIVE] = &tm_active, + [GPIOMUX_SUSPENDED] = &tm_suspended, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_tma300_configs[] __initdata = { + { + .gpio = 61, + .settings = { + [GPIOMUX_ACTIVE] = &tma_active, + [GPIOMUX_SUSPENDED] = &tm_suspended, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_aux_pcm_configs[] __initdata = { + { + .gpio = 111, + .settings = { + [GPIOMUX_ACTIVE] = &aux_pcm_active_config, + [GPIOMUX_SUSPENDED] = &aux_pcm_suspend_config, + }, + }, + { + .gpio = 112, + .settings = { + [GPIOMUX_ACTIVE] = &aux_pcm_active_config, + [GPIOMUX_SUSPENDED] = &aux_pcm_suspend_config, + }, + }, + { + .gpio = 113, + .settings = { + [GPIOMUX_ACTIVE] = &aux_pcm_active_config, + [GPIOMUX_SUSPENDED] = &aux_pcm_suspend_config, + }, + }, + { + .gpio = 114, + .settings = { + [GPIOMUX_ACTIVE] = &aux_pcm_active_config, + [GPIOMUX_SUSPENDED] = &aux_pcm_suspend_config, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_sdc_configs[] __initdata = { + /* SDCC1 data[0] */ + { + .gpio = 159, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[1] */ + { + .gpio = 160, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[2] */ + { + .gpio = 161, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[3] */ + { + .gpio = 162, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[4] */ + { + .gpio = 163, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[5] */ + { + .gpio = 164, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[6] */ + { + .gpio = 165, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 data[7] */ + { + .gpio = 166, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 CLK */ + { + .gpio = 167, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_clk_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, + /* SDCC1 CMD */ + { + .gpio = 168, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc1_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc1_suspend_config, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_charm_sdc_configs[] __initdata = { + /* SDCC5 cmd */ + { + .gpio = 95, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* SDCC5 data[3]*/ + { + .gpio = 96, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* SDCC5 clk */ + { + .gpio = 97, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_clk_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* SDCC5 data[2]*/ + { + .gpio = 98, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* SDCC5 data[1]*/ + { + .gpio = 99, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* SDCC5 data[0]*/ + { + .gpio = 100, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc5_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc5_suspend_config, + }, + }, + /* MDM2AP_SYNC */ + { + .gpio = 129, + .settings = { + [GPIOMUX_ACTIVE] = &mdm2ap_sync_active_cfg, + [GPIOMUX_SUSPENDED] = &mdm2ap_sync_suspend_cfg, + }, + }, + + /* MDM2AP_VDDMIN */ + { + .gpio = 140, + .settings = { + [GPIOMUX_ACTIVE] = &mdm2ap_vddmin_active_cfg, + [GPIOMUX_SUSPENDED] = &mdm2ap_vddmin_suspend_cfg, + }, + }, + /* SDCC2 data[0] */ + { + .gpio = 143, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[1] */ + { + .gpio = 144, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[2] */ + { + .gpio = 145, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[3] */ + { + .gpio = 146, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[4] */ + { + .gpio = 147, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[5] */ + { + .gpio = 148, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[6] */ + { + .gpio = 149, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 data[7] */ + { + .gpio = 150, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_4_7_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + /* SDCC2 CMD */ + { + .gpio = 151, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_dat_0_3_cmd_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, + + /* SDCC2 CLK */ + { + .gpio = 152, + .settings = { + [GPIOMUX_ACTIVE] = &sdcc2_clk_actv_cfg, + [GPIOMUX_SUSPENDED] = &sdcc2_suspend_config, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_snd_configs[] __initdata = { + { + .gpio = 108, + .settings = { + [GPIOMUX_ACTIVE] = &msm_snddev_active_config, + [GPIOMUX_SUSPENDED] = &msm_snddev_suspend_config, + }, + }, + { + .gpio = 109, + .settings = { + [GPIOMUX_ACTIVE] = &msm_snddev_active_config, + [GPIOMUX_SUSPENDED] = &msm_snddev_suspend_config, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_mi2s_configs[] __initdata = { + /* MI2S WS */ + { + .gpio = 101, + .settings = { + [GPIOMUX_ACTIVE] = &mi2s_active_cfg, + [GPIOMUX_SUSPENDED] = &mi2s_suspend_cfg, + }, + }, + /* MI2S SCLK */ + { + .gpio = 102, + .settings = { + [GPIOMUX_ACTIVE] = &mi2s_active_cfg, + [GPIOMUX_SUSPENDED] = &mi2s_suspend_cfg, + }, + }, + /* MI2S MCLK */ + { + .gpio = 103, + .settings = { + [GPIOMUX_ACTIVE] = &mi2s_active_cfg, + [GPIOMUX_SUSPENDED] = &mi2s_suspend_cfg, + }, + }, + /* MI2S SD3 */ + { + .gpio = 107, + .settings = { + [GPIOMUX_ACTIVE] = &mi2s_active_cfg, + [GPIOMUX_SUSPENDED] = &mi2s_suspend_cfg, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_lcdc_configs[] __initdata = { + /* lcdc_pclk */ + { + .gpio = 0, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_hsync */ + { + .gpio = 1, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_vsync */ + { + .gpio = 2, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_den */ + { + .gpio = 3, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red7 */ + { + .gpio = 4, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red6 */ + { + .gpio = 5, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red5 */ + { + .gpio = 6, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red4 */ + { + .gpio = 7, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red3 */ + { + .gpio = 8, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red2 */ + { + .gpio = 9, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red1 */ + { + .gpio = 10, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_red0 */ + { + .gpio = 11, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn7 */ + { + .gpio = 12, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn6 */ + { + .gpio = 13, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn5 */ + { + .gpio = 14, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn4 */ + { + .gpio = 15, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn3 */ + { + .gpio = 16, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn2 */ + { + .gpio = 17, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn1 */ + { + .gpio = 18, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_grn0 */ + { + .gpio = 19, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu7 */ + { + .gpio = 20, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu6 */ + { + .gpio = 21, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu5 */ + { + .gpio = 22, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu4 */ + { + .gpio = 23, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu3 */ + { + .gpio = 24, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu2 */ + { + .gpio = 25, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu1 */ + { + .gpio = 26, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, + /* lcdc_blu0 */ + { + .gpio = 27, + .settings = { + [GPIOMUX_ACTIVE] = &lcdc_active_cfg, + [GPIOMUX_SUSPENDED] = &lcdc_suspend_cfg, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_mdp_vsync_configs[] __initdata = { + { + .gpio = 28, + .settings = { + [GPIOMUX_ACTIVE] = &mdp_vsync_active_cfg, + [GPIOMUX_SUSPENDED] = &mdp_vsync_suspend_cfg, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_hdmi_configs[] __initdata = { + { + .gpio = 169, + .settings = { + [GPIOMUX_ACTIVE] = &hdmi_active_1_cfg, + [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg, + }, + }, + { + .gpio = 170, + .settings = { + [GPIOMUX_ACTIVE] = &hdmi_active_2_cfg, + [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg, + }, + }, + { + .gpio = 171, + .settings = { + [GPIOMUX_ACTIVE] = &hdmi_active_2_cfg, + [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg, + }, + }, + { + .gpio = 172, + .settings = { + [GPIOMUX_ACTIVE] = &hdmi_active_3_cfg, + [GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg, + }, + }, +}; + +/* Because PMIC drivers do not use gpio-management routines and PMIC + * gpios must never sleep, a "good enough" config is obtained by placing + * the active config in the 'suspended' slot and leaving the active + * config invalid: the suspended config will be installed at boot + * and never replaced. + */ + +static struct msm_gpiomux_config msm8x60_pmic_configs[] __initdata = { + { + .gpio = 88, + .settings = { + [GPIOMUX_SUSPENDED] = &pmic_suspended_cfg, + }, + }, + { + .gpio = 91, + .settings = { + [GPIOMUX_SUSPENDED] = &pmic_suspended_cfg, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_common_configs[] __initdata = { + /* MDM2AP_STATUS */ + { + .gpio = 77, + .settings = { + [GPIOMUX_ACTIVE] = &mdm2ap_status_active_cfg, + [GPIOMUX_SUSPENDED] = &mdm2ap_status_suspend_cfg, + }, + }, + /* PS_HOLD */ + { + .gpio = 92, + .settings = { + [GPIOMUX_SUSPENDED] = &ps_hold, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_cam_configs[] __initdata = { + { + .gpio = 29, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_2_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 30, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_1_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 31, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_2_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 32, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_5_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 42, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_2_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 47, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_3_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 48, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_3_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 105, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_4_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, + { + .gpio = 106, + .settings = { + [GPIOMUX_ACTIVE] = &cam_active_4_cfg, + [GPIOMUX_SUSPENDED] = &cam_suspend_cfg, + }, + }, +}; + +static struct msm_gpiomux_config msm8x60_charm_configs[] __initdata = { + /* AP2MDM_WAKEUP */ + { + .gpio = 135, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_cfg, + } + }, + /* MDM2AP_VFR */ + { + .gpio = 94, + .settings = { + [GPIOMUX_ACTIVE] = &mdm2ap_vfr_active_cfg, + [GPIOMUX_SUSPENDED] = &mdm2ap_vfr_suspend_cfg, + } + }, + /* AP2MDM_STATUS */ + { + .gpio = 136, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_cfg, + } + }, + /* MDM2AP_STATUS */ + { + .gpio = 134, + .settings = { + [GPIOMUX_SUSPENDED] = &mdm2ap_status_cfg, + } + }, + /* MDM2AP_WAKEUP */ + { + .gpio = 40, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_cfg, + } + }, + /* MDM2AP_ERRFATAL */ + { + .gpio = 133, + .settings = { + [GPIOMUX_SUSPENDED] = &mdm2ap_errfatal_cfg, + } + }, + /* AP2MDM_ERRFATAL */ + { + .gpio = 93, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_cfg, + } + }, + /* AP2MDM_KPDPWR_N */ + { + .gpio = 132, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg, + } + }, + /* AP2MDM_PMIC_RESET_N */ + { + .gpio = 131, + .settings = { + [GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg, + } + } +}; + +struct msm_gpiomux_configs +msm8x60_surf_ffa_gpiomux_cfgs[] __initdata = { + {msm8x60_gsbi_configs, ARRAY_SIZE(msm8x60_gsbi_configs)}, + {msm8x60_ebi2_configs, ARRAY_SIZE(msm8x60_ebi2_configs)}, + {msm8x60_uart_configs, ARRAY_SIZE(msm8x60_uart_configs)}, +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) + {msm8x60_isp_usb_configs, ARRAY_SIZE(msm8x60_isp_usb_configs)}, +#endif + {msm8x60_ts_configs, ARRAY_SIZE(msm8x60_ts_configs)}, + {msm8x60_aux_pcm_configs, ARRAY_SIZE(msm8x60_aux_pcm_configs)}, + {msm8x60_sdc_configs, ARRAY_SIZE(msm8x60_sdc_configs)}, + {msm8x60_snd_configs, ARRAY_SIZE(msm8x60_snd_configs)}, + {msm8x60_mi2s_configs, ARRAY_SIZE(msm8x60_mi2s_configs)}, + {msm8x60_lcdc_configs, ARRAY_SIZE(msm8x60_lcdc_configs)}, + {msm8x60_mdp_vsync_configs, ARRAY_SIZE(msm8x60_mdp_vsync_configs)}, + {msm8x60_hdmi_configs, ARRAY_SIZE(msm8x60_hdmi_configs)}, + {msm8x60_pmic_configs, ARRAY_SIZE(msm8x60_pmic_configs)}, + {msm8x60_common_configs, ARRAY_SIZE(msm8x60_common_configs)}, + {msm8x60_cam_configs, ARRAY_SIZE(msm8x60_cam_configs)}, + {msm8x60_tmg200_configs, ARRAY_SIZE(msm8x60_tmg200_configs)}, + {NULL, 0}, +}; + +struct msm_gpiomux_configs +msm8x60_fluid_gpiomux_cfgs[] __initdata = { + {msm8x60_gsbi_configs, ARRAY_SIZE(msm8x60_gsbi_configs)}, + {msm8x60_fluid_gsbi_configs, ARRAY_SIZE(msm8x60_fluid_gsbi_configs)}, + {msm8x60_ebi2_configs, ARRAY_SIZE(msm8x60_ebi2_configs)}, + {msm8x60_uart_configs, ARRAY_SIZE(msm8x60_uart_configs)}, + {msm8x60_ts_configs, ARRAY_SIZE(msm8x60_ts_configs)}, + {msm8x60_aux_pcm_configs, ARRAY_SIZE(msm8x60_aux_pcm_configs)}, + {msm8x60_sdc_configs, ARRAY_SIZE(msm8x60_sdc_configs)}, + {msm8x60_snd_configs, ARRAY_SIZE(msm8x60_snd_configs)}, + {msm8x60_mi2s_configs, ARRAY_SIZE(msm8x60_mi2s_configs)}, + {msm8x60_lcdc_configs, ARRAY_SIZE(msm8x60_lcdc_configs)}, + {msm8x60_mdp_vsync_configs, ARRAY_SIZE(msm8x60_mdp_vsync_configs)}, + {msm8x60_hdmi_configs, ARRAY_SIZE(msm8x60_hdmi_configs)}, + {msm8x60_pmic_configs, ARRAY_SIZE(msm8x60_pmic_configs)}, + {msm8x60_common_configs, ARRAY_SIZE(msm8x60_common_configs)}, + {msm8x60_cam_configs, ARRAY_SIZE(msm8x60_cam_configs)}, + {msm8x60_tma300_configs, ARRAY_SIZE(msm8x60_tma300_configs)}, + {NULL, 0}, +}; + +struct msm_gpiomux_configs +msm8x60_charm_gpiomux_cfgs[] __initdata = { + {msm8x60_gsbi_configs, ARRAY_SIZE(msm8x60_gsbi_configs)}, + {msm8x60_uart_configs, ARRAY_SIZE(msm8x60_uart_configs)}, +#ifdef CONFIG_MSM_GSBI9_UART + {msm8x60_charm_uart_configs, ARRAY_SIZE(msm8x60_charm_uart_configs)}, +#endif + {msm8x60_ts_configs, ARRAY_SIZE(msm8x60_ts_configs)}, + {msm8x60_aux_pcm_configs, ARRAY_SIZE(msm8x60_aux_pcm_configs)}, + {msm8x60_sdc_configs, ARRAY_SIZE(msm8x60_sdc_configs)}, + {msm8x60_snd_configs, ARRAY_SIZE(msm8x60_snd_configs)}, + {msm8x60_mi2s_configs, ARRAY_SIZE(msm8x60_mi2s_configs)}, + {msm8x60_lcdc_configs, ARRAY_SIZE(msm8x60_lcdc_configs)}, + {msm8x60_mdp_vsync_configs, ARRAY_SIZE(msm8x60_mdp_vsync_configs)}, + {msm8x60_hdmi_configs, ARRAY_SIZE(msm8x60_hdmi_configs)}, + {msm8x60_pmic_configs, ARRAY_SIZE(msm8x60_pmic_configs)}, + {msm8x60_common_configs, ARRAY_SIZE(msm8x60_common_configs)}, + {msm8x60_cam_configs, ARRAY_SIZE(msm8x60_cam_configs)}, + {msm8x60_tmg200_configs, ARRAY_SIZE(msm8x60_tmg200_configs)}, + {msm8x60_charm_sdc_configs, ARRAY_SIZE(msm8x60_charm_sdc_configs)}, + {msm8x60_charm_configs, ARRAY_SIZE(msm8x60_charm_configs)}, + {NULL, 0}, +}; + +struct msm_gpiomux_configs +msm8x60_dragon_gpiomux_cfgs[] __initdata = { + {msm8x60_gsbi_configs, ARRAY_SIZE(msm8x60_gsbi_configs)}, + {msm8x60_ebi2_configs, ARRAY_SIZE(msm8x60_ebi2_configs)}, + {msm8x60_uart_configs, ARRAY_SIZE(msm8x60_uart_configs)}, +#if defined(CONFIG_USB_PEHCI_HCD) || defined(CONFIG_USB_PEHCI_HCD_MODULE) + {msm8x60_isp_usb_configs, ARRAY_SIZE(msm8x60_isp_usb_configs)}, +#endif + {msm8x60_ts_configs, ARRAY_SIZE(msm8x60_ts_configs)}, + {msm8x60_aux_pcm_configs, ARRAY_SIZE(msm8x60_aux_pcm_configs)}, + {msm8x60_sdc_configs, ARRAY_SIZE(msm8x60_sdc_configs)}, + {msm8x60_snd_configs, ARRAY_SIZE(msm8x60_snd_configs)}, + {msm8x60_mi2s_configs, ARRAY_SIZE(msm8x60_mi2s_configs)}, + {msm8x60_lcdc_configs, ARRAY_SIZE(msm8x60_lcdc_configs)}, + {msm8x60_mdp_vsync_configs, ARRAY_SIZE(msm8x60_mdp_vsync_configs)}, + {msm8x60_hdmi_configs, ARRAY_SIZE(msm8x60_hdmi_configs)}, + {msm8x60_pmic_configs, ARRAY_SIZE(msm8x60_pmic_configs)}, + {msm8x60_common_configs, ARRAY_SIZE(msm8x60_common_configs)}, + {msm8x60_cam_configs, ARRAY_SIZE(msm8x60_cam_configs)}, + {msm8x60_tmg200_configs, ARRAY_SIZE(msm8x60_tmg200_configs)}, + {NULL, 0}, +}; + +void __init msm8x60_init_gpiomux(struct msm_gpiomux_configs *cfgs) +{ + int rc; + + rc = msm_gpiomux_init(NR_GPIO_IRQS); + if (rc) { + pr_err("%s failure: %d\n", __func__, rc); + return; + } -struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS] = {}; + while (cfgs->cfg) { + msm_gpiomux_install(cfgs->cfg, cfgs->ncfg); + ++cfgs; + } +}