瀏覽代碼

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>
Mark Brown 14 年之前
父節點
當前提交
a41619455c
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      sound/soc/codecs/wm8996.c

+ 3 - 0
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);
 	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,
 	snd_soc_update_bits(codec, WM8996_FLL_CONTROL_1,
 			    WM8996_FLL_ENA, WM8996_FLL_ENA);
 			    WM8996_FLL_ENA, WM8996_FLL_ENA);