diff options
author | Mark Brown <broonie@linaro.org> | 2014-01-30 20:04:34 +0000 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-02-03 12:50:59 +0000 |
commit | d6f95e5407674d2f7d61feef81fef96b364d9188 (patch) | |
tree | a5b91fab644d4713bf6f87abae75be375a7d25aa /sound/soc/codecs/wm8962.c | |
parent | df6ab65f2fef3d7b769f3ba87c7bb265ace80b4e (diff) | |
download | linux-d6f95e5407674d2f7d61feef81fef96b364d9188.tar.bz2 |
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: Mark Brown <broonie@linaro.org>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm8962.c')
-rw-r--r-- | sound/soc/codecs/wm8962.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index d7d43c9371f4..cd96d463a505 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c @@ -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); - ret = 0; - /* This should be a massive overestimate but go even * 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, if (timeout == 0 && wm8962->irq) { 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_fout = Fout; wm8962->fll_src = source; - return ret; + return 0; } static int wm8962_mute(struct snd_soc_dai *dai, int mute) |