ASoC: tlv320aic32x4: Fix MICPGA input configuration
authorMarkus Pargmann <mpa@pengutronix.de>
Mon, 27 Jan 2014 12:03:06 +0000 (13:03 +0100)
committerMark Brown <broonie@linaro.org>
Mon, 27 Jan 2014 18:13:44 +0000 (18:13 +0000)
Currently the Negative Terminal Input Routing Configuration is only set
when there is a special routing configuration. If we don't use one of
the inputs IN1 or IN2 as negative terminal input, the PGA and recording
does not work.

This patch adds a route from CM1L/CM1R to the PGA as negative input by
default. With this configuration the PGA can amplify all input signals
and line-in/mic works again.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/tlv320aic32x4.c
sound/soc/codecs/tlv320aic32x4.h

index ee9ad05f9137026a5a2fa02fcf28e582b681b7fe..688151ba309af2e3af8bdeea6a428850947d3773 100644 (file)
@@ -618,12 +618,14 @@ static int aic32x4_probe(struct snd_soc_codec *codec)
        snd_soc_write(codec, AIC32X4_CMMODE, tmp_reg);
 
        /* Mic PGA routing */
-       if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K) {
+       if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K)
                snd_soc_write(codec, AIC32X4_LMICPGANIN, AIC32X4_LMICPGANIN_IN2R_10K);
-       }
-       if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K) {
+       else
+               snd_soc_write(codec, AIC32X4_LMICPGANIN, AIC32X4_LMICPGANIN_CM1L_10K);
+       if (aic32x4->micpga_routing & AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K)
                snd_soc_write(codec, AIC32X4_RMICPGANIN, AIC32X4_RMICPGANIN_IN1L_10K);
-       }
+       else
+               snd_soc_write(codec, AIC32X4_RMICPGANIN, AIC32X4_RMICPGANIN_CM1R_10K);
 
        aic32x4_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
 
index 83795af8c75f5ee8b562c53aff4627f2fc5bab03..995f033a855d64509b9dffa2dae6fd9ce810268c 100644 (file)
 #define AIC32X4_MICBIAS_2075V          0x60
 
 #define AIC32X4_LMICPGANIN_IN2R_10K    0x10
+#define AIC32X4_LMICPGANIN_CM1L_10K    0x40
 #define AIC32X4_RMICPGANIN_IN1L_10K    0x10
+#define AIC32X4_RMICPGANIN_CM1R_10K    0x40
 
 #define AIC32X4_LMICPGAVOL_NOGAIN      0x80
 #define AIC32X4_RMICPGAVOL_NOGAIN      0x80