807 lines
17 KiB
C
807 lines
17 KiB
C
/* Copyright (c) 2011-2012, 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
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
#include <linux/gpio.h>
|
|
#include <asm/mach-types.h>
|
|
#include <mach/gpiomux.h>
|
|
#include <mach/socinfo.h>
|
|
#include "devices.h"
|
|
#include "board-8930.h"
|
|
|
|
/* The SPI configurations apply to GSBI 1*/
|
|
static struct gpiomux_setting spi_active = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_12MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting spi_suspended_config = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi3_suspended_cfg = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_KEEPER,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi3_active_cfg = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi5 = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi9 = {
|
|
.func = GPIOMUX_FUNC_2,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi10 = {
|
|
.func = GPIOMUX_FUNC_2,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting gsbi12 = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting cdc_mclk = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting audio_auxpcm[] = {
|
|
/* Suspended state */
|
|
{
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
},
|
|
/* Active state */
|
|
{
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
},
|
|
};
|
|
|
|
static struct gpiomux_setting audio_mbhc = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct gpiomux_setting audio_spkr_boost = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
|
|
static struct gpiomux_setting gpio_eth_suspend_1_cfg = {
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
};
|
|
|
|
static struct gpiomux_setting gpio_eth_suspend_2_cfg = {
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
};
|
|
#endif
|
|
|
|
static struct gpiomux_setting slimbus = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_KEEPER,
|
|
};
|
|
|
|
static struct gpiomux_setting wcnss_5wire_suspend_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
};
|
|
|
|
static struct gpiomux_setting wcnss_5wire_active_cfg = {
|
|
.func = GPIOMUX_FUNC_1,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_resout_sus_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_resout_act_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_ldo_en_sus_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_ldo_en_act_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_int_act_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
};
|
|
|
|
static struct gpiomux_setting atmel_int_sus_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
#ifdef MSM8930_PHASE_2
|
|
static struct gpiomux_setting hsusb_sus_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
.dir = GPIOMUX_OUT_LOW,
|
|
};
|
|
static struct msm_gpiomux_config msm8930_hsusb_configs[] = {
|
|
{
|
|
.gpio = 63, /* HSUSB_EXTERNAL_5V_LDO_EN */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &hsusb_sus_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 97, /* HSUSB_5V_EN */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &hsusb_sus_cfg,
|
|
},
|
|
},
|
|
};
|
|
#endif
|
|
|
|
static struct gpiomux_setting hap_lvl_shft_suspended_config = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting hap_lvl_shft_active_config = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
};
|
|
|
|
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_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 mdp_vsync_suspend_cfg = {
|
|
.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_DOWN,
|
|
};
|
|
|
|
#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
|
|
static struct gpiomux_setting hdmi_suspend_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
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_2MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct gpiomux_setting hdmi_active_3_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
.dir = GPIOMUX_IN,
|
|
};
|
|
|
|
static struct gpiomux_setting hdmi_active_4_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
.dir = GPIOMUX_OUT_HIGH,
|
|
};
|
|
|
|
static struct gpiomux_setting hdmi_active_5_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
.dir = GPIOMUX_OUT_HIGH,
|
|
};
|
|
|
|
#endif
|
|
|
|
static struct gpiomux_setting sitar_reset = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_6MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
.dir = GPIOMUX_OUT_LOW,
|
|
};
|
|
|
|
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
|
|
static struct msm_gpiomux_config msm8960_ethernet_configs[] = {
|
|
{
|
|
.gpio = 89,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gpio_eth_suspend_1_cfg,
|
|
}
|
|
},
|
|
{
|
|
.gpio = 90,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gpio_eth_suspend_2_cfg,
|
|
}
|
|
},
|
|
};
|
|
#endif
|
|
|
|
static struct msm_gpiomux_config msm8960_gsbi_configs[] __initdata = {
|
|
{
|
|
.gpio = 6, /* GSBI1 QUP SPI_DATA_MOSI */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &spi_suspended_config,
|
|
[GPIOMUX_ACTIVE] = &spi_active,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 7, /* GSBI1 QUP SPI_DATA_MISO */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &spi_suspended_config,
|
|
[GPIOMUX_ACTIVE] = &spi_active,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 8, /* GSBI1 QUP SPI_CS_N */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &spi_suspended_config,
|
|
[GPIOMUX_ACTIVE] = &spi_active,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 9, /* GSBI1 QUP SPI_CLK */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &spi_suspended_config,
|
|
[GPIOMUX_ACTIVE] = &spi_active,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 16, /* GSBI3 I2C QUP SDA */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
|
|
[GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 17, /* GSBI3 I2C QUP SCL */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi3_suspended_cfg,
|
|
[GPIOMUX_ACTIVE] = &gsbi3_active_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 22, /* GSBI5 UART2 */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi5,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 23, /* GSBI5 UART2 */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi5,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 44, /* GSBI12 I2C QUP SDA */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi12,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 95, /* GSBI9 I2C QUP SDA */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi9,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 96, /* GSBI12 I2C QUP SCL */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi9,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 45, /* GSBI12 I2C QUP SCL */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi12,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 73, /* GSBI10 I2C QUP SDA */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi10,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 74, /* GSBI10 I2C QUP SCL */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gsbi10,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_slimbus_config[] __initdata = {
|
|
{
|
|
.gpio = 60, /* slimbus data */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &slimbus,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 61, /* slimbus clk */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &slimbus,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_audio_codec_configs[] __initdata = {
|
|
{
|
|
.gpio = 59,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &cdc_mclk,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_audio_mbhc_configs[] __initdata = {
|
|
{
|
|
.gpio = 37,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_mbhc,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_audio_spkr_configs[] __initdata = {
|
|
{
|
|
.gpio = 15,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_spkr_boost,
|
|
},
|
|
},
|
|
};
|
|
|
|
|
|
static struct msm_gpiomux_config msm8960_audio_auxpcm_configs[] __initdata = {
|
|
{
|
|
.gpio = 63,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
|
|
[GPIOMUX_ACTIVE] = &audio_auxpcm[1],
|
|
},
|
|
},
|
|
{
|
|
.gpio = 64,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
|
|
[GPIOMUX_ACTIVE] = &audio_auxpcm[1],
|
|
},
|
|
},
|
|
{
|
|
.gpio = 65,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
|
|
[GPIOMUX_ACTIVE] = &audio_auxpcm[1],
|
|
},
|
|
},
|
|
{
|
|
.gpio = 66,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &audio_auxpcm[0],
|
|
[GPIOMUX_ACTIVE] = &audio_auxpcm[1],
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config wcnss_5wire_interface[] = {
|
|
{
|
|
.gpio = 84,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 85,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 86,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 87,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 88,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &wcnss_5wire_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &wcnss_5wire_suspend_cfg,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_atmel_configs[] __initdata = {
|
|
{ /* TS INTERRUPT */
|
|
.gpio = 11,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &atmel_int_act_cfg,
|
|
[GPIOMUX_SUSPENDED] = &atmel_int_sus_cfg,
|
|
},
|
|
},
|
|
{ /* TS LDO ENABLE */
|
|
.gpio = 50,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &atmel_ldo_en_act_cfg,
|
|
[GPIOMUX_SUSPENDED] = &atmel_ldo_en_sus_cfg,
|
|
},
|
|
},
|
|
{ /* TS RESOUT */
|
|
.gpio = 52,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &atmel_resout_act_cfg,
|
|
[GPIOMUX_SUSPENDED] = &atmel_resout_sus_cfg,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config hap_lvl_shft_config[] __initdata = {
|
|
{
|
|
.gpio = 47,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &hap_lvl_shft_suspended_config,
|
|
[GPIOMUX_ACTIVE] = &hap_lvl_shft_active_config,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config mdm_configs[] __initdata = {
|
|
/* AP2MDM_STATUS */
|
|
{
|
|
.gpio = 94,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
|
|
}
|
|
},
|
|
/* MDM2AP_STATUS */
|
|
{
|
|
.gpio = 69,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &mdm2ap_status_cfg,
|
|
}
|
|
},
|
|
/* MDM2AP_ERRFATAL */
|
|
{
|
|
.gpio = 70,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &mdm2ap_errfatal_cfg,
|
|
}
|
|
},
|
|
/* AP2MDM_ERRFATAL */
|
|
{
|
|
.gpio = 95,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &ap2mdm_cfg,
|
|
}
|
|
},
|
|
/* AP2MDM_KPDPWR_N */
|
|
{
|
|
.gpio = 81,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
|
|
}
|
|
},
|
|
/* AP2MDM_PMIC_RESET_N */
|
|
{
|
|
.gpio = 80,
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &ap2mdm_kpdpwr_n_cfg,
|
|
}
|
|
}
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8960_mdp_vsync_configs[] __initdata = {
|
|
{
|
|
.gpio = 0,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &mdp_vsync_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &mdp_vsync_suspend_cfg,
|
|
},
|
|
}
|
|
};
|
|
|
|
#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
|
|
static struct msm_gpiomux_config msm8960_hdmi_configs[] __initdata = {
|
|
{
|
|
.gpio = 99,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 100,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 101,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_1_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 102,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_2_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8930_mhl_configs[] __initdata = {
|
|
{
|
|
.gpio = 72,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_3_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 71,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_4_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 73,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &hdmi_active_5_cfg,
|
|
[GPIOMUX_SUSPENDED] = &hdmi_suspend_cfg,
|
|
},
|
|
},
|
|
|
|
};
|
|
#endif
|
|
|
|
static struct gpiomux_setting haptics_active_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_UP,
|
|
};
|
|
static struct gpiomux_setting haptics_suspend_cfg = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_8MA,
|
|
.pull = GPIOMUX_PULL_DOWN,
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8930_haptics_configs[] __initdata = {
|
|
{
|
|
.gpio = 77,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &haptics_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &haptics_suspend_cfg,
|
|
},
|
|
},
|
|
{
|
|
.gpio = 78,
|
|
.settings = {
|
|
[GPIOMUX_ACTIVE] = &haptics_active_cfg,
|
|
[GPIOMUX_SUSPENDED] = &haptics_suspend_cfg,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct gpiomux_setting sd_det_line = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8930_sd_det_config[] __initdata = {
|
|
{
|
|
.gpio = 94, /* SD Card Detect Line */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &sd_det_line,
|
|
[GPIOMUX_ACTIVE] = &sd_det_line,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct gpiomux_setting gyro_int_line = {
|
|
.func = GPIOMUX_FUNC_GPIO,
|
|
.drv = GPIOMUX_DRV_2MA,
|
|
.pull = GPIOMUX_PULL_NONE,
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm8930_gyro_int_config[] __initdata = {
|
|
{
|
|
.gpio = 69, /* Gyro Interrupt Line */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &gyro_int_line,
|
|
[GPIOMUX_ACTIVE] = &gyro_int_line,
|
|
},
|
|
},
|
|
};
|
|
|
|
static struct msm_gpiomux_config msm_sitar_config[] __initdata = {
|
|
{
|
|
.gpio = 42, /* SYS_RST_N */
|
|
.settings = {
|
|
[GPIOMUX_SUSPENDED] = &sitar_reset,
|
|
},
|
|
}
|
|
};
|
|
|
|
int __init msm8930_init_gpiomux(void)
|
|
{
|
|
int rc = msm_gpiomux_init(NR_GPIO_IRQS);
|
|
if (rc) {
|
|
pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc);
|
|
return rc;
|
|
}
|
|
|
|
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
|
|
msm_gpiomux_install(msm8960_ethernet_configs,
|
|
ARRAY_SIZE(msm8960_ethernet_configs));
|
|
#endif
|
|
|
|
msm_gpiomux_install(msm8960_gsbi_configs,
|
|
ARRAY_SIZE(msm8960_gsbi_configs));
|
|
|
|
msm_gpiomux_install(msm8960_atmel_configs,
|
|
ARRAY_SIZE(msm8960_atmel_configs));
|
|
|
|
msm_gpiomux_install(msm8960_slimbus_config,
|
|
ARRAY_SIZE(msm8960_slimbus_config));
|
|
|
|
msm_gpiomux_install(msm8960_audio_codec_configs,
|
|
ARRAY_SIZE(msm8960_audio_codec_configs));
|
|
|
|
msm_gpiomux_install(msm8960_audio_mbhc_configs,
|
|
ARRAY_SIZE(msm8960_audio_mbhc_configs));
|
|
|
|
msm_gpiomux_install(msm8960_audio_spkr_configs,
|
|
ARRAY_SIZE(msm8960_audio_spkr_configs));
|
|
|
|
msm_gpiomux_install(msm8960_audio_auxpcm_configs,
|
|
ARRAY_SIZE(msm8960_audio_auxpcm_configs));
|
|
|
|
msm_gpiomux_install(wcnss_5wire_interface,
|
|
ARRAY_SIZE(wcnss_5wire_interface));
|
|
|
|
if (machine_is_msm8930_mtp() || machine_is_msm8930_fluid() ||
|
|
machine_is_msm8930_cdp()) {
|
|
msm_gpiomux_install(hap_lvl_shft_config,
|
|
ARRAY_SIZE(hap_lvl_shft_config));
|
|
#ifdef MSM8930_PHASE_2
|
|
msm_gpiomux_install(msm8930_hsusb_configs,
|
|
ARRAY_SIZE(msm8930_hsusb_configs));
|
|
#endif
|
|
}
|
|
|
|
if (PLATFORM_IS_CHARM25())
|
|
msm_gpiomux_install(mdm_configs,
|
|
ARRAY_SIZE(mdm_configs));
|
|
|
|
if (machine_is_msm8930_cdp() || machine_is_msm8930_mtp()
|
|
|| machine_is_msm8930_fluid())
|
|
msm_gpiomux_install(msm8930_haptics_configs,
|
|
ARRAY_SIZE(msm8930_haptics_configs));
|
|
|
|
#ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL
|
|
msm_gpiomux_install(msm8960_hdmi_configs,
|
|
ARRAY_SIZE(msm8960_hdmi_configs));
|
|
if (msm8930_mhl_display_enabled())
|
|
msm_gpiomux_install(msm8930_mhl_configs,
|
|
ARRAY_SIZE(msm8930_mhl_configs));
|
|
#endif
|
|
|
|
msm_gpiomux_install(msm8960_mdp_vsync_configs,
|
|
ARRAY_SIZE(msm8960_mdp_vsync_configs));
|
|
|
|
msm_gpiomux_install(msm8930_sd_det_config,
|
|
ARRAY_SIZE(msm8930_sd_det_config));
|
|
|
|
if (machine_is_msm8930_fluid() || machine_is_msm8930_mtp())
|
|
msm_gpiomux_install(msm8930_gyro_int_config,
|
|
ARRAY_SIZE(msm8930_gyro_int_config));
|
|
|
|
msm_gpiomux_install(msm_sitar_config, ARRAY_SIZE(msm_sitar_config));
|
|
|
|
return 0;
|
|
}
|