Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
diff --git a/arch/arm/mach-msm/gpiomux-8x60.c b/arch/arm/mach-msm/gpiomux-8x60.c
index 7b380b3..5cf0776 100644
--- a/arch/arm/mach-msm/gpiomux-8x60.c
+++ b/arch/arm/mach-msm/gpiomux-8x60.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+/* Copyright (c) 2010-2011, Code Aurora Forum. 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,1701 @@
* 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 <linux/module.h>
+#include <mach/irqs.h>
+#include <asm/mach-types.h>
#include "gpiomux.h"
+#include "gpiomux-8x60.h"
-struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS] = {};
+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_NONE,
+};
+
+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_NONE,
+};
+
+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_NONE,
+};
+
+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},
+};
+
+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;
+ }
+
+ while (cfgs->cfg) {
+ msm_gpiomux_install(cfgs->cfg, cfgs->ncfg);
+ ++cfgs;
+ }
+}