aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-08-22 12:25:37 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-10-14 22:51:33 -0400
commitf95be9d6162adf1dba3f85060e24d14744bfaeb2 (patch)
treea5675966595cf177da06cd4ea63ac9e0f3b071f4 /sound
parenta3a1d9d21d34626bb0ba4b10035bc85841394f6b (diff)
ASoC: wm8994: Tune VMID power down sequence
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/wm8994.c22
1 files changed, 4 insertions, 18 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index a7dfb6cbafdf..4d0ae9dcbc57 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -939,16 +939,10 @@ static void vmid_dereference(struct snd_soc_codec *codec)
939 WM8994_BIAS_SRC | 939 WM8994_BIAS_SRC |
940 WM8994_VMID_DISCH); 940 WM8994_VMID_DISCH);
941 941
942 switch (wm8994->vmid_mode) { 942 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
943 case WM8994_VMID_FORCE: 943 WM8994_VMID_SEL_MASK, 0);
944 msleep(350);
945 break;
946 default:
947 break;
948 }
949 944
950 snd_soc_update_bits(codec, WM8994_ADDITIONAL_CONTROL, 945 msleep(400);
951 WM8994_VROI, WM8994_VROI);
952 946
953 /* Active discharge */ 947 /* Active discharge */
954 snd_soc_update_bits(codec, WM8994_ANTIPOP_1, 948 snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
@@ -957,17 +951,12 @@ static void vmid_dereference(struct snd_soc_codec *codec)
957 WM8994_LINEOUT1_DISCH | 951 WM8994_LINEOUT1_DISCH |
958 WM8994_LINEOUT2_DISCH); 952 WM8994_LINEOUT2_DISCH);
959 953
960 msleep(150);
961
962 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_3, 954 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_3,
963 WM8994_LINEOUT1N_ENA | 955 WM8994_LINEOUT1N_ENA |
964 WM8994_LINEOUT1P_ENA | 956 WM8994_LINEOUT1P_ENA |
965 WM8994_LINEOUT2N_ENA | 957 WM8994_LINEOUT2N_ENA |
966 WM8994_LINEOUT2P_ENA, 0); 958 WM8994_LINEOUT2P_ENA, 0);
967 959
968 snd_soc_update_bits(codec, WM8994_ADDITIONAL_CONTROL,
969 WM8994_VROI, 0);
970
971 /* Switch off startup biases */ 960 /* Switch off startup biases */
972 snd_soc_update_bits(codec, WM8994_ANTIPOP_2, 961 snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
973 WM8994_BIAS_SRC | 962 WM8994_BIAS_SRC |
@@ -976,10 +965,7 @@ static void vmid_dereference(struct snd_soc_codec *codec)
976 WM8994_VMID_RAMP_MASK, 0); 965 WM8994_VMID_RAMP_MASK, 0);
977 966
978 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1, 967 snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
979 WM8994_BIAS_ENA | WM8994_VMID_SEL_MASK, 0); 968 WM8994_VMID_SEL_MASK, 0);
980
981 snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
982 WM8994_VMID_RAMP_MASK, 0);
983 } 969 }
984 970
985 pm_runtime_put(codec->dev); 971 pm_runtime_put(codec->dev);