diff options
author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2015-07-10 14:37:25 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-10 17:02:42 +0100 |
commit | d90c6cc242045115c5c4973114cc93e1c20e2ea8 (patch) | |
tree | 46c61df443c63309656fc669ec5bc4401b12c3e9 /sound/soc/codecs/wm5110.c | |
parent | 5ed68f0a28f96c5127246d1743dd57b58a090f07 (diff) | |
download | linux-stable-d90c6cc242045115c5c4973114cc93e1c20e2ea8.tar.gz linux-stable-d90c6cc242045115c5c4973114cc93e1c20e2ea8.tar.bz2 linux-stable-d90c6cc242045115c5c4973114cc93e1c20e2ea8.zip |
ASoC: arizona: Fix error path in codec probe
If we fail to add some DSPs or fail to add the controls we should call
wm_adsp2_codec_remove for all the cores we have already added. This
patch fixes this up on the wm5102 and wm5110.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/wm5110.c')
-rw-r--r-- | sound/soc/codecs/wm5110.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index 05aa5bca97cf..2d1168c768d9 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c @@ -1607,18 +1607,24 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec) for (i = 0; i < WM5110_NUM_ADSP; ++i) { ret = wm_adsp2_codec_probe(&priv->core.adsp[i], codec); if (ret) - return ret; + goto err_adsp2_codec_probe; } ret = snd_soc_add_codec_controls(codec, arizona_adsp2_rate_controls, WM5110_NUM_ADSP); if (ret) - return ret; + goto err_adsp2_codec_probe; snd_soc_dapm_disable_pin(dapm, "HAPTICS"); return 0; + +err_adsp2_codec_probe: + for (--i; i >= 0; --i) + wm_adsp2_codec_remove(&priv->core.adsp[i], codec); + + return ret; } static int wm5110_codec_remove(struct snd_soc_codec *codec) |