ASoC: twl6040: Select LPPLL during standby
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Wed, 11 May 2016 11:14:05 +0000 (14:14 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 11 May 2016 13:39:33 +0000 (14:39 +0100)
When the codec is in standby we do not need to keep the HPPLL active.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/twl6040.c

index bc3de2e844e68b80d8bf96dcc5c66f96d1a82669..7a744b581cc165be4e70f170eda9213f92e8b259 100644 (file)
@@ -824,7 +824,7 @@ static int twl6040_set_bias_level(struct snd_soc_codec *codec,
 {
        struct twl6040 *twl6040 = codec->control_data;
        struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
-       int ret;
+       int ret = 0;
 
        switch (level) {
        case SND_SOC_BIAS_ON:
@@ -832,12 +832,16 @@ static int twl6040_set_bias_level(struct snd_soc_codec *codec,
        case SND_SOC_BIAS_PREPARE:
                break;
        case SND_SOC_BIAS_STANDBY:
-               if (priv->codec_powered)
+               if (priv->codec_powered) {
+                       /* Select low power PLL in standby */
+                       ret = twl6040_set_pll(twl6040, TWL6040_SYSCLK_SEL_LPPLL,
+                                             32768, 19200000);
                        break;
+               }
 
                ret = twl6040_power(twl6040, 1);
                if (ret)
-                       return ret;
+                       break;
 
                priv->codec_powered = 1;
 
@@ -853,7 +857,7 @@ static int twl6040_set_bias_level(struct snd_soc_codec *codec,
                break;
        }
 
-       return 0;
+       return ret;
 }
 
 static int twl6040_startup(struct snd_pcm_substream *substream,