summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChao Jiang <chaoj@nvidia.com>2011-03-08 18:43:45 +0900
committerVarun Colbert <vcolbert@nvidia.com>2011-03-14 17:40:39 -0800
commit0ea635e64cc77747e9aeedeb294c81a521f31e4a (patch)
tree499c17c4c1115102db12415be20cad74c39bc754
parentf7ccf6cae50ef4fa40ff4a8fa93d290c86c67a8c (diff)
ARM: ventana: Support mic jack detection
Configured wm8903 codec on Ventana board to enalbe mic jack detection. Instead of interrupt, set GPIO4 as a generic gpio pin to output Mic Bias Current Detection result. fixes bug 766757 Change-Id: I9062d06c594dc9f9b2eea76eaefc83c26107117f Reviewed-on: http://git-master/r/22038 Reviewed-by: Chao Jiang <chaoj@nvidia.com> Tested-by: Chao Jiang <chaoj@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Scott Peterson <speterson@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-ventana-jack.c4
-rw-r--r--arch/arm/mach-tegra/board-ventana-pinmux.c4
-rw-r--r--arch/arm/mach-tegra/board-ventana.c7
3 files changed, 11 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/board-ventana-jack.c b/arch/arm/mach-tegra/board-ventana-jack.c
index 7d8d233f5155..375b3970c26b 100644
--- a/arch/arm/mach-tegra/board-ventana-jack.c
+++ b/arch/arm/mach-tegra/board-ventana-jack.c
@@ -32,6 +32,7 @@ static struct tegra_wired_jack_conf ventana_wr_jack_conf = {
.en_mic_ext = TEGRA_GPIO_PX1,
.en_mic_int = TEGRA_GPIO_PX0,
.en_spkr = WM8903_GP3,
+ .cdc_irq = TEGRA_GPIO_PX3,
};
static struct platform_device ventana_hs_jack_device = {
@@ -47,6 +48,9 @@ int __init ventana_wired_jack_init(void)
int ret;
tegra_gpio_enable(ventana_wr_jack_conf.hp_det_n);
+ tegra_gpio_enable(ventana_wr_jack_conf.en_mic_int);
+ tegra_gpio_enable(ventana_wr_jack_conf.en_mic_ext);
+ tegra_gpio_enable(ventana_wr_jack_conf.cdc_irq);
ret = platform_device_register(&ventana_hs_jack_device);
return ret;
diff --git a/arch/arm/mach-tegra/board-ventana-pinmux.c b/arch/arm/mach-tegra/board-ventana-pinmux.c
index de702536c78f..4bbb30cae4e5 100644
--- a/arch/arm/mach-tegra/board-ventana-pinmux.c
+++ b/arch/arm/mach-tegra/board-ventana-pinmux.c
@@ -149,13 +149,13 @@ static __initdata struct tegra_pingroup_config ventana_pinmux[] = {
{TEGRA_PINGROUP_SLXK, TEGRA_MUX_SDIO3, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_SPDI, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_SPDO, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
- {TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
+ {TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPIB, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPID, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPIE, TEGRA_MUX_SPI1, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPIF, TEGRA_MUX_SPI1, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
- {TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
+ {TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_SPIH, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_UAA, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_UAB, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_NORMAL},
diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c
index f5d9f269ed88..fbd7c205fb2e 100644
--- a/arch/arm/mach-tegra/board-ventana.c
+++ b/arch/arm/mach-tegra/board-ventana.c
@@ -333,12 +333,16 @@ static struct platform_device rndis_device = {
#endif
static struct wm8903_platform_data wm8903_pdata = {
+ .irq_active_low = 0,
+ .micdet_cfg = 0x83, /* enable mic bias current */
+ .micdet_delay = 0,
.gpio_base = WM8903_GPIO_BASE,
.gpio_cfg = {
WM8903_GPIO_NO_CONFIG,
WM8903_GPIO_NO_CONFIG,
0, /* as output pin */
- WM8903_GPIO_NO_CONFIG,
+ WM8903_GPn_FN_GPIO_MICBIAS_CURRENT_DETECT
+ << WM8903_GP4_FN_SHIFT, /* as micbias current detect */
WM8903_GPIO_NO_CONFIG,
},
};
@@ -347,7 +351,6 @@ static struct i2c_board_info __initdata ventana_i2c_bus1_board_info[] = {
{
I2C_BOARD_INFO("wm8903", 0x1a),
.platform_data = &wm8903_pdata,
- .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PX3),
},
};