summary refs log tree commit diff
path: root/sound/soc/codecs/wm8400.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-03-18 15:19:10 +0000
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-03-18 18:31:53 +0000
commite3598f6e4218d1aad3369c97217266b2375e6aca (patch)
treec2a34a3c806ffb7001aac6a9ce52525a7da6ed15 /sound/soc/codecs/wm8400.c
parentda88b48b84e1a504b6a19aff9d5b8236a59e228a (diff)
downloadlinux-e3598f6e4218d1aad3369c97217266b2375e6aca.tar.gz
ASoC: Further optimise WM8400 bias configuration sequence
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>
Diffstat (limited to 'sound/soc/codecs/wm8400.c')
-rw-r--r--sound/soc/codecs/wm8400.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c
index 744e0dc73be4..462f8b0d9ac7 100644
--- a/sound/soc/codecs/wm8400.c
+++ b/sound/soc/codecs/wm8400.c
@@ -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);
 		}