Merge remote-tracking branch 'asoc/topic/twl6040' into asoc-next
[cascardo/linux.git] / sound / soc / codecs / twl6040.c
index d1e3a93..1f70810 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,