ASoC: Improve WM9713 voice DAC shutdown procedure
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 23 Jan 2009 14:44:54 +0000 (14:44 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 24 Feb 2009 23:48:11 +0000 (23:48 +0000)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm9713.c

index 54db9c52498884fab217b213bb5c8f451bc8fb15..a93aea5c18781ea0cecd6112cfc113162c9c7baa 100644 (file)
@@ -940,13 +940,14 @@ static void wm9713_voiceshutdown(struct snd_pcm_substream *substream,
                                 struct snd_soc_dai *dai)
 {
        struct snd_soc_codec *codec = dai->codec;
-       u16 status;
+       u16 status, rate;
 
        /* Gracefully shut down the voice interface. */
        status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000;
-       ac97_write(codec, AC97_HANDSET_RATE, 0x0280);
+       rate = ac97_read(codec, AC97_HANDSET_RATE) & 0xF0FF;
+       ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0200);
        schedule_timeout_interruptible(msecs_to_jiffies(1));
-       ac97_write(codec, AC97_HANDSET_RATE, 0x0F80);
+       ac97_write(codec, AC97_HANDSET_RATE, rate | 0x0F00);
        ac97_write(codec, AC97_EXTENDED_MID, status);
 }