Commit d6f95e54 authored by Mark Brown's avatar Mark Brown

ASoC: wm8962: Clean up error handling for failed FLL start

Don't record the FLL as having started and leave the hardware disabled
ensuring we are in a better state if this does happen to be a transient
error and making debugging easier.
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
Acked-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
parent df6ab65f
...@@ -2898,8 +2898,6 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source, ...@@ -2898,8 +2898,6 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
dev_dbg(codec->dev, "FLL configured for %dHz->%dHz\n", Fref, Fout); dev_dbg(codec->dev, "FLL configured for %dHz->%dHz\n", Fref, Fout);
ret = 0;
/* This should be a massive overestimate but go even /* This should be a massive overestimate but go even
* higher if we'll error out * higher if we'll error out
*/ */
...@@ -2913,14 +2911,17 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source, ...@@ -2913,14 +2911,17 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
if (timeout == 0 && wm8962->irq) { if (timeout == 0 && wm8962->irq) {
dev_err(codec->dev, "FLL lock timed out"); dev_err(codec->dev, "FLL lock timed out");
ret = -ETIMEDOUT; snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1,
WM8962_FLL_ENA, 0);
pm_runtime_put(codec->dev);
return -ETIMEDOUT;
} }
wm8962->fll_fref = Fref; wm8962->fll_fref = Fref;
wm8962->fll_fout = Fout; wm8962->fll_fout = Fout;
wm8962->fll_src = source; wm8962->fll_src = source;
return ret; return 0;
} }
static int wm8962_mute(struct snd_soc_dai *dai, int mute) static int wm8962_mute(struct snd_soc_dai *dai, int mute)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment