aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm9713.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-01-23 09:44:54 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-02-24 18:48:11 -0500
commit8056d9bbb57207854462b6b0a3a75d172300cce5 (patch)
tree2a26c40ee5b081e9df0efe2d46e85caafb31899e /sound/soc/codecs/wm9713.c
parent93e051d2771e6bf70e86b8265bfbf296a457d044 (diff)
ASoC: Improve WM9713 voice DAC shutdown procedure
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm9713.c')
-rw-r--r--sound/soc/codecs/wm9713.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 54db9c524988..a93aea5c1878 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -940,13 +940,14 @@ static void wm9713_voiceshutdown(struct snd_pcm_substream *substream,
940 struct snd_soc_dai *dai) 940 struct snd_soc_dai *dai)
941{ 941{
942 struct snd_soc_codec *codec = dai->codec; 942 struct snd_soc_codec *codec = dai->codec;
943 u16 status; 943 u16 status, rate;
944 944
945 /* Gracefully shut down the voice interface. */ 945 /* Gracefully shut down the voice interface. */
946 status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000; 946 status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000;
947 ac97_write(codec, AC97_HANDSET_RATE, 0x0280); 947 rate = ac97_read(codec, AC97_HANDSET_RATE) & 0xF0FF;
948 ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0200);
948 schedule_timeout_interruptible(msecs_to_jiffies(1)); 949 schedule_timeout_interruptible(msecs_to_jiffies(1));
949 ac97_write(codec, AC97_HANDSET_RATE, 0x0F80); 950 ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0F00);
950 ac97_write(codec, AC97_EXTENDED_MID, status); 951 ac97_write(codec, AC97_EXTENDED_MID, status);
951} 952}
952 953