diff options
author | Lionel Xu <Lionel.Xu@freescale.com> | 2011-09-15 15:44:26 +0800 |
---|---|---|
committer | Eric Miao <eric.miao@canonical.com> | 2011-11-10 07:38:42 +0800 |
commit | acf61f6096139659de13e3ac538608e6817a822e (patch) | |
tree | 8f4421fa35b362e652081528eb059e1275f8a86f /sound | |
parent | f53611ad98673bdea8dcc9cd4c5424417511ad5c (diff) |
ENGR00156813 MX53 ALSA: Recording no sound
There is no sound in the recorded wav, to enable recording, the VAG should be
powered up, and the mic bias resistor should be setup with proper value.
Signed-off-by: Lionel Xu <Lionel.Xu@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 17 | ||||
-rw-r--r-- | sound/soc/codecs/sgtl5000.h | 2 |
2 files changed, 14 insertions, 5 deletions
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 20cc36f268a..485a9d1cd47 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -103,7 +103,11 @@ static int mic_bias_event(struct snd_soc_dapm_widget *w, case SND_SOC_DAPM_POST_PMU: /* change mic bias resistor to 4Kohm */ snd_soc_update_bits(w->codec, SGTL5000_CHIP_MIC_CTRL, - SGTL5000_BIAS_R_4k, SGTL5000_BIAS_R_4k); + 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); break; case SND_SOC_DAPM_PRE_PMD: @@ -112,7 +116,11 @@ static int mic_bias_event(struct snd_soc_dapm_widget *w, * of mic bias and output impedance */ snd_soc_update_bits(w->codec, SGTL5000_CHIP_MIC_CTRL, - SGTL5000_BIAS_R_8k, 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; @@ -240,7 +248,7 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { 0, SGTL5000_CHIP_DIG_POWER, 1, 0), - 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), @@ -271,7 +279,8 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { /* routes for sgtl5000 */ static const struct snd_soc_dapm_route audio_map[] = { {"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 */ diff --git a/sound/soc/codecs/sgtl5000.h b/sound/soc/codecs/sgtl5000.h index eec3ab368f3..8a9f43534b7 100644 --- a/sound/soc/codecs/sgtl5000.h +++ b/sound/soc/codecs/sgtl5000.h @@ -280,7 +280,7 @@ /* * SGTL5000_CHIP_MIC_CTRL */ -#define SGTL5000_BIAS_R_MASK 0x0200 +#define SGTL5000_BIAS_R_MASK 0x0300 #define SGTL5000_BIAS_R_SHIFT 8 #define SGTL5000_BIAS_R_WIDTH 2 #define SGTL5000_BIAS_R_off 0x0 |