From mboxrd@z Thu Jan 1 00:00:00 1970 From: aisheng.dong@freescale.com (Dong Aisheng) Date: Wed, 28 Mar 2012 17:58:58 +0800 Subject: [alsa-devel] [PATCH] ASoC: sgtl5000: fix power on/off of MIC bias In-Reply-To: <1332919833-9641-1-git-send-email-shawn.guo@linaro.org> References: <1332919833-9641-1-git-send-email-shawn.guo@linaro.org> Message-ID: <20120328095857.GA29787@shlinux2.ap.freescale.net> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Mar 28, 2012 at 03:30:33PM +0800, Shawn Guo wrote: > From: Lionel Xu > > There is no sound in the recorded wav, to enable recording, the VAG > should be powered up, and the mic bias resistor should be set up with > proper value. > > Signed-off-by: Lionel Xu > Signed-off-by: Shawn Guo > Cc: Zeng Zhaoming > --- > sound/soc/codecs/sgtl5000.c | 14 +++++++++++--- > 1 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c > index d192626..a24299c 100644 > --- a/sound/soc/codecs/sgtl5000.c > +++ b/sound/soc/codecs/sgtl5000.c > @@ -132,11 +132,18 @@ static int mic_bias_event(struct snd_soc_dapm_widget *w, > snd_soc_update_bits(w->codec, SGTL5000_CHIP_MIC_CTRL, > SGTL5000_BIAS_R_MASK, > SGTL5000_BIAS_R_4k << SGTL5000_BIAS_R_SHIFT); > + > + snd_soc_update_bits(w->codec, SGTL5000_CHIP_ANA_POWER, > + SGTL5000_VAG_POWERUP, SGTL5000_VAG_POWERUP); Only enable SGTL5000_VAG_POWERUP for mic bias_event may not be sufficient. IIRC for line-in record, we also need to enable VAG_POWER. Will verify it later when i'm free. Regards Dong Aisheng > break; > > case SND_SOC_DAPM_PRE_PMD: > snd_soc_update_bits(w->codec, SGTL5000_CHIP_MIC_CTRL, > - SGTL5000_BIAS_R_MASK, 0); > + SGTL5000_BIAS_R_MASK, > + SGTL5000_BIAS_R_off << SGTL5000_BIAS_R_SHIFT); > + > + snd_soc_update_bits(w->codec, SGTL5000_CHIP_ANA_POWER, > + SGTL5000_VAG_POWERUP, 0); > break; > } > return 0; > @@ -197,7 +204,7 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { > SND_SOC_DAPM_OUTPUT("HP_OUT"), > SND_SOC_DAPM_OUTPUT("LINE_OUT"), > > - SND_SOC_DAPM_MICBIAS_E("Mic Bias", SGTL5000_CHIP_MIC_CTRL, 8, 0, > + SND_SOC_DAPM_MICBIAS_E("Mic Bias", SND_SOC_NOPM, 0, 0, > mic_bias_event, > SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), > > @@ -229,7 +236,8 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { > /* routes for sgtl5000 */ > static const struct snd_soc_dapm_route sgtl5000_dapm_routes[] = { > {"Capture Mux", "LINE_IN", "LINE_IN"}, /* line_in --> adc_mux */ > - {"Capture Mux", "MIC_IN", "MIC_IN"}, /* mic_in --> adc_mux */ > + {"Mic Bias", NULL, "MIC_IN"}, /* mic_in --> mic bias */ > + {"Capture Mux", "MIC_IN", "Mic Bias"}, /* mic bias --> adc_mux */ > > {"ADC", NULL, "Capture Mux"}, /* adc_mux --> adc */ > {"AIFOUT", NULL, "ADC"}, /* adc --> i2s_out */ > -- > 1.7.4.1 > > > _______________________________________________ > Alsa-devel mailing list > Alsa-devel at alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel >