aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/codecs/wm5102.c7
-rw-r--r--sound/soc/codecs/wm5110.c10
2 files changed, 14 insertions, 3 deletions
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c
index 6ddee999bc51..64637d1cf4e5 100644
--- a/sound/soc/codecs/wm5102.c
+++ b/sound/soc/codecs/wm5102.c
@@ -1879,7 +1879,7 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
1879 ret = snd_soc_add_codec_controls(codec, 1879 ret = snd_soc_add_codec_controls(codec,
1880 arizona_adsp2_rate_controls, 1); 1880 arizona_adsp2_rate_controls, 1);
1881 if (ret) 1881 if (ret)
1882 return ret; 1882 goto err_adsp2_codec_probe;
1883 1883
1884 arizona_init_spk(codec); 1884 arizona_init_spk(codec);
1885 arizona_init_gpio(codec); 1885 arizona_init_gpio(codec);
@@ -1889,6 +1889,11 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
1889 priv->core.arizona->dapm = dapm; 1889 priv->core.arizona->dapm = dapm;
1890 1890
1891 return 0; 1891 return 0;
1892
1893err_adsp2_codec_probe:
1894 wm_adsp2_codec_remove(&priv->core.adsp[0], codec);
1895
1896 return ret;
1892} 1897}
1893 1898
1894static int wm5102_codec_remove(struct snd_soc_codec *codec) 1899static int wm5102_codec_remove(struct snd_soc_codec *codec)
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)
1607 for (i = 0; i < WM5110_NUM_ADSP; ++i) { 1607 for (i = 0; i < WM5110_NUM_ADSP; ++i) {
1608 ret = wm_adsp2_codec_probe(&priv->core.adsp[i], codec); 1608 ret = wm_adsp2_codec_probe(&priv->core.adsp[i], codec);
1609 if (ret) 1609 if (ret)
1610 return ret; 1610 goto err_adsp2_codec_probe;
1611 } 1611 }
1612 1612
1613 ret = snd_soc_add_codec_controls(codec, 1613 ret = snd_soc_add_codec_controls(codec,
1614 arizona_adsp2_rate_controls, 1614 arizona_adsp2_rate_controls,
1615 WM5110_NUM_ADSP); 1615 WM5110_NUM_ADSP);
1616 if (ret) 1616 if (ret)
1617 return ret; 1617 goto err_adsp2_codec_probe;
1618 1618
1619 snd_soc_dapm_disable_pin(dapm, "HAPTICS"); 1619 snd_soc_dapm_disable_pin(dapm, "HAPTICS");
1620 1620
1621 return 0; 1621 return 0;
1622
1623err_adsp2_codec_probe:
1624 for (--i; i >= 0; --i)
1625 wm_adsp2_codec_remove(&priv->core.adsp[i], codec);
1626
1627 return ret;
1622} 1628}
1623 1629
1624static int wm5110_codec_remove(struct snd_soc_codec *codec) 1630static int wm5110_codec_remove(struct snd_soc_codec *codec)