ASoC: Further optimise WM8400 bias configuration sequence
Mark Brown [Wed, 18 Mar 2009 15:19:10 +0000 (15:19 +0000)]
The active discharge does not bring sufficient benefit to justify the
lengthy times involved so don't do that.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

sound/soc/codecs/wm8400.c

index 744e0dc..462f8b0 100644 (file)
@@ -1096,45 +1096,22 @@ static int wm8400_set_bias_level(struct snd_soc_codec *codec,
                        wm8400_write(codec, WM8400_POWER_MANAGEMENT_1,
                                     WM8400_CODEC_ENA | WM8400_SYSCLK_ENA);
 
-                       /* Enable all output discharge bits */
-                       wm8400_write(codec, WM8400_ANTIPOP1, WM8400_DIS_LLINE |
-                               WM8400_DIS_RLINE | WM8400_DIS_OUT3 |
-                               WM8400_DIS_OUT4 | WM8400_DIS_LOUT |
-                               WM8400_DIS_ROUT);
-
                        /* Enable POBCTRL, SOFT_ST, VMIDTOG and BUFDCOPEN */
                        wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
                                     WM8400_BUFDCOPEN | WM8400_POBCTRL);
 
-                       msleep(500);
-
-                       /* Enable outputs */
-                       val = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
-                       val |= WM8400_SPK_ENA | WM8400_OUT3_ENA |
-                               WM8400_OUT4_ENA | WM8400_LOUT_ENA |
-                               WM8400_ROUT_ENA;
-                       wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
-
-                       /* disable all output discharge bits */
-                       wm8400_write(codec, WM8400_ANTIPOP1, 0);
+                       msleep(50);
 
                        /* Enable VREF & VMID at 2x50k */
+                       val = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
                        val |= 0x2 | WM8400_VREF_ENA;
                        wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
 
-                       msleep(600);
-
                        /* Enable BUFIOEN */
                        wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
                                     WM8400_BUFDCOPEN | WM8400_POBCTRL |
                                     WM8400_BUFIOEN);
 
-                       /* Disable outputs */
-                       val &= ~(WM8400_SPK_ENA | WM8400_OUT3_ENA |
-                                WM8400_OUT4_ENA | WM8400_LOUT_ENA |
-                                WM8400_ROUT_ENA);
-                       wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
-
                        /* disable POBCTRL, SOFT_ST and BUFDCOPEN */
                        wm8400_write(codec, WM8400_ANTIPOP2, WM8400_BUFIOEN);
                }