diff options
-rw-r--r-- | sound/soc/codecs/wm9713.c | 7 |
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 | ||