ASoC: wm_hubs: Push check for idle_bias_off out into drivers
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 31 Jan 2012 16:16:47 +0000 (16:16 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 31 Jan 2012 19:29:58 +0000 (19:29 +0000)
For later wm_hubs devices we have much less need to keep the biases up
even when using single ended line outputs so flag idle_bias_off for
everything except the WM8993 and WM8994.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8993.c
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm_hubs.c

index 474dc72..db51007 100644 (file)
@@ -1622,6 +1622,12 @@ static int wm8993_probe(struct snd_soc_codec *codec)
        wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff,
                                    wm8993->pdata.lineout2_diff);
 
+       /* If the line outputs are differential then we aren't presenting
+        * VMID as an output and can disable it.
+        */
+       if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff)
+               codec->dapm.idle_bias_off = 1;
+
        return 0;
 
 }
index 11ca19b..c262918 100644 (file)
@@ -3396,10 +3396,18 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
        pm_runtime_enable(codec->dev);
        pm_runtime_resume(codec->dev);
 
+       /* By default use idle_bias_off, will override for WM8994 */
+       codec->dapm.idle_bias_off = 1;
+
        /* Set revision-specific configuration */
        wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION);
        switch (control->type) {
        case WM8994:
+               /* Single ended line outputs should have VMID on. */
+               if (!wm8994->pdata->lineout1_diff ||
+                   !wm8994->pdata->lineout2_diff)
+                       codec->dapm.idle_bias_off = 0;
+
                switch (wm8994->revision) {
                case 2:
                case 3:
index 2a61094..ec7d490 100644 (file)
@@ -952,12 +952,6 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec,
                                    WM8993_LINEOUT2_MODE,
                                    WM8993_LINEOUT2_MODE);
 
-       /* If the line outputs are differential then we aren't presenting
-        * VMID as an output and can disable it.
-        */
-       if (lineout1_diff && lineout2_diff)
-               codec->dapm.idle_bias_off = 1;
-
        if (lineout1fb)
                snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL,
                                    WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB);