From 8cbceb052ae1d741b9577cbf0759af861a573cb7 Mon Sep 17 00:00:00 2001 From: Viraj Karandikar Date: Tue, 3 May 2011 11:03:56 +0530 Subject: ASOC: tegra: Correct DAPM routes for Headset and Int mic Split Headset to Headset Out and Headset In Use IN1L for Int mic and Headset (for WM8903) Remove unused variables and warning Bug 816278 Bug 830213 Bug:836150 Reviewed-on: http://git-master/r/30142 (cherry picked from commit 170ccc20d6227faaf196a920e7812792c305e2ff) Change-Id: I97a149df932c07b365eb21502be7e386c94e1c06 Reviewed-on: http://git-master/r/36077 Tested-by: Sanjay Singh Chauhan Reviewed-by: Viraj Karandikar Reviewed-by: Scott Peterson --- sound/soc/tegra/tegra_soc.h | 3 ++- sound/soc/tegra/tegra_soc_controls.c | 8 ++++---- sound/soc/tegra/tegra_soc_wm8753.c | 20 ++++++++++++------- sound/soc/tegra/tegra_soc_wm8903.c | 37 ++++++++++++++++++++---------------- 4 files changed, 40 insertions(+), 28 deletions(-) (limited to 'sound') diff --git a/sound/soc/tegra/tegra_soc.h b/sound/soc/tegra/tegra_soc.h index 238497aacb2c..58e12fb872ab 100644 --- a/sound/soc/tegra/tegra_soc.h +++ b/sound/soc/tegra/tegra_soc.h @@ -88,7 +88,8 @@ #define TEGRA_INT_MIC 0x10 #define TEGRA_EXT_MIC 0x20 #define TEGRA_LINEIN 0x40 -#define TEGRA_HEADSET 0x80 +#define TEGRA_HEADSET_OUT 0x80 +#define TEGRA_HEADSET_IN 0x100 struct tegra_dma_channel; diff --git a/sound/soc/tegra/tegra_soc_controls.c b/sound/soc/tegra/tegra_soc_controls.c index 138fac279f47..1e103b9d1118 100644 --- a/sound/soc/tegra/tegra_soc_controls.c +++ b/sound/soc/tegra/tegra_soc_controls.c @@ -35,7 +35,7 @@ static void tegra_audio_route(struct tegra_audio_data* audio_data, if (play_device_new != audio_data->play_device) { codec_con &= ~(TEGRA_HEADPHONE | TEGRA_LINEOUT | - TEGRA_SPK | TEGRA_EAR_SPK | TEGRA_HEADSET); + TEGRA_SPK | TEGRA_EAR_SPK | TEGRA_HEADSET_OUT); if (play_device_new & TEGRA_AUDIO_DEVICE_OUT_HEADPHONE) codec_con |= TEGRA_HEADPHONE; @@ -50,7 +50,7 @@ static void tegra_audio_route(struct tegra_audio_data* audio_data, codec_con |= TEGRA_EAR_SPK; if (play_device_new & TEGRA_AUDIO_DEVICE_OUT_HEADSET) - codec_con |= TEGRA_HEADSET; + codec_con |= TEGRA_HEADSET_OUT; tegra_ext_control(audio_data->codec, codec_con); audio_data->play_device = play_device_new; @@ -58,7 +58,7 @@ static void tegra_audio_route(struct tegra_audio_data* audio_data, if (capture_device_new != audio_data->capture_device) { codec_con &= ~(TEGRA_INT_MIC | TEGRA_EXT_MIC | - TEGRA_LINEIN | TEGRA_HEADSET); + TEGRA_LINEIN | TEGRA_HEADSET_IN); if (capture_device_new & (TEGRA_AUDIO_DEVICE_IN_BUILTIN_MIC | TEGRA_AUDIO_DEVICE_IN_BACK_MIC)) @@ -71,7 +71,7 @@ static void tegra_audio_route(struct tegra_audio_data* audio_data, codec_con |= TEGRA_LINEIN; if (capture_device_new & TEGRA_AUDIO_DEVICE_IN_HEADSET) - codec_con |= TEGRA_HEADSET; + codec_con |= TEGRA_HEADSET_IN; tegra_ext_control(audio_data->codec, codec_con); audio_data->capture_device = capture_device_new; diff --git a/sound/soc/tegra/tegra_soc_wm8753.c b/sound/soc/tegra/tegra_soc_wm8753.c index b285e6f82b33..b8abf99dd87b 100644 --- a/sound/soc/tegra/tegra_soc_wm8753.c +++ b/sound/soc/tegra/tegra_soc_wm8753.c @@ -470,10 +470,15 @@ void tegra_ext_control(struct snd_soc_codec *codec, int new_con) else snd_soc_dapm_disable_pin(codec, "Linein"); - if (new_con & TEGRA_HEADSET) - snd_soc_dapm_enable_pin(codec, "Headset"); + if (new_con & TEGRA_HEADSET_OUT) + snd_soc_dapm_enable_pin(codec, "Headset Out"); else - snd_soc_dapm_disable_pin(codec, "Headset"); + snd_soc_dapm_disable_pin(codec, "Headset Out"); + + if (new_con & TEGRA_HEADSET_IN) + snd_soc_dapm_enable_pin(codec, "Headset In"); + else + snd_soc_dapm_disable_pin(codec, "Headset In"); /* signal a DAPM event */ snd_soc_dapm_sync(codec); @@ -484,7 +489,8 @@ void tegra_ext_control(struct snd_soc_codec *codec, int new_con) static const struct snd_soc_dapm_widget tegra_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_HP("EarPiece", NULL), - SND_SOC_DAPM_HP("Headset", NULL), + SND_SOC_DAPM_HP("Headset Out", NULL), + SND_SOC_DAPM_MIC("Headset In", NULL), SND_SOC_DAPM_SPK("Int Spk", NULL), SND_SOC_DAPM_MIC("Ext Mic", NULL), SND_SOC_DAPM_MIC("Int Mic", NULL), @@ -503,10 +509,10 @@ static const struct snd_soc_dapm_route audio_map[] = { {"EarPiece", NULL, "LOUT2"}, /* headset Jack */ - {"Headset", NULL, "ROUT1"}, - {"Headset", NULL, "LOUT1"}, + {"Headset Out", NULL, "ROUT1"}, + {"Headset Out", NULL, "LOUT1"}, {"MIC1", NULL, "Mic Bias"}, - {"Mic Bias", NULL, "Headset"}, + {"Mic Bias", NULL, "Headset In"}, /* build-in speaker */ {"Int Spk", NULL, "ROUT1"}, diff --git a/sound/soc/tegra/tegra_soc_wm8903.c b/sound/soc/tegra/tegra_soc_wm8903.c index efad1e607e9d..1c3ed544ddd5 100644 --- a/sound/soc/tegra/tegra_soc_wm8903.c +++ b/sound/soc/tegra/tegra_soc_wm8903.c @@ -179,7 +179,6 @@ static int tegra_hifi_hw_params(struct snd_pcm_substream *substream, if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK) { int CtrlReg = 0; int VolumeCtrlReg = 0; - int SidetoneCtrlReg = 0; snd_soc_write(codec, WM8903_ANALOGUE_LEFT_INPUT_0, 0X7); snd_soc_write(codec, WM8903_ANALOGUE_RIGHT_INPUT_0, 0X7); @@ -203,23 +202,24 @@ static int tegra_hifi_hw_params(struct snd_pcm_substream *substream, VolumeCtrlReg); snd_soc_write(codec, WM8903_ANALOGUE_RIGHT_INPUT_0, VolumeCtrlReg); - /* replicate mic setting on both channels */ + /* Left ADC data on both channels */ CtrlReg = snd_soc_read(codec, WM8903_AUDIO_INTERFACE_0); CtrlReg = SET_REG_VAL(CtrlReg, 0x1, B06_AIF_ADCR, 0x0); CtrlReg = SET_REG_VAL(CtrlReg, 0x1, B06_AIF_ADCL, 0x0); snd_soc_write(codec, WM8903_AUDIO_INTERFACE_0, CtrlReg); /* Enable analog inputs */ - CtrlReg = (0x1<