summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-16 09:57:58 +0200
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-08-22 14:57:35 +0200
commita41619455c0e28b6973471e87f1702c6129d3439 (patch)
tree2c1bd5f926983e87f46c3ad1ac09708975910f27 /sound
parentASoC: Clear any outstanding WM8962 FLL lock completions before waiting (diff)
downloadlinux-a41619455c0e28b6973471e87f1702c6129d3439.tar.xz
linux-a41619455c0e28b6973471e87f1702c6129d3439.zip
ASoC: Clear completions from late WM8996 FLL lock IRQs
In case we have a pending completion, for example due to a problem with the input clock which got corrected after we timed out. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/wm8996.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index e76d4edb67b2..0936ae5e3749 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -2111,6 +2111,9 @@ static int wm8996_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
snd_soc_write(codec, WM8996_FLL_EFS_1, fll_div.lambda);
+ /* Clear any pending completions (eg, from failed startups) */
+ try_wait_for_completion(&wm8996->fll_lock);
+
snd_soc_update_bits(codec, WM8996_FLL_CONTROL_1,
WM8996_FLL_ENA, WM8996_FLL_ENA);