summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Xu <r63889@freescale.com>2009-08-19 14:17:25 +0800
committerJustin Waters <justin.waters@timesys.com>2009-10-13 11:05:20 -0400
commit295e131666093291735326de579fa3cdac293b11 (patch)
tree0dfd4ed120627e85ee96ff5036cfcfaad165b8e0
parent76655a77f0ac39ef2fa819609da0cfb88150505d (diff)
ENGR00115163 MX233 ALSA: Resolve arecord problem
Supply a bias voltage to external microphone to make it work, since there is no vddio_p supplied to microphone on evk board. Signed-off-by: Lionel Xu <r63889@freescale.com>
-rw-r--r--sound/soc/codecs/stmp378x_codec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/soc/codecs/stmp378x_codec.c b/sound/soc/codecs/stmp378x_codec.c
index 7e15810756de..30d96c6f4dca 100644
--- a/sound/soc/codecs/stmp378x_codec.c
+++ b/sound/soc/codecs/stmp378x_codec.c
@@ -538,6 +538,10 @@ stmp378x_codec_adc_power_on(struct stmp378x_codec_priv *stmp378x_adc)
HW_AUDIOIN_ADCVOL_SET(
BF_AUDIOIN_ADCVOL_SELECT_RIGHT(BV_AUDIOIN_ADCVOL_SELECT__MIC));
+ /* Supply bias voltage to microphone */
+ HW_AUDIOIN_MICLINE_SET(BF_AUDIOIN_MICLINE_MIC_RESISTOR(2));
+ HW_AUDIOIN_MICLINE_SET(BM_AUDIOIN_MICLINE_MIC_SELECT);
+
/* Set max ADC volume */
reg = HW_AUDIOIN_ADCVOLUME_RD();
reg &= ~BM_AUDIOIN_ADCVOLUME_VOLUME_LEFT;
@@ -560,6 +564,9 @@ stmp378x_codec_adc_power_down(struct stmp378x_codec_priv *stmp378x_adc)
/* Gate ADC clocks */
HW_AUDIOIN_CTRL_SET(BM_AUDIOIN_CTRL_CLKGATE);
HW_AUDIOIN_ANACLKCTRL_SET(BM_AUDIOIN_ANACLKCTRL_CLKGATE);
+
+ /* Disable bias voltage to microphone*/
+ HW_AUDIOIN_MICLINE_SET(BF_AUDIOIN_MICLINE_MIC_RESISTOR(0));
}
static void