ASoC: Consolidate CPU and CODEC DAI removal
authorLars-Peter Clausen <lars@metafoo.de>
Tue, 19 Aug 2014 13:51:26 +0000 (15:51 +0200)
committerMark Brown <broonie@linaro.org>
Tue, 19 Aug 2014 15:59:47 +0000 (10:59 -0500)
CPU and CODEC DAI works exactly the same way. There is already a helper function
for CODEC DAI removal, use that one as well for CPU DAI removal.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/soc-core.c

index 4dc2876..5f6f978 100644 (file)
@@ -1021,28 +1021,27 @@ static void soc_remove_component(struct snd_soc_component *component)
        module_put(component->dev->driver->owner);
 }
 
-static void soc_remove_codec_dai(struct snd_soc_dai *codec_dai, int order)
+static void soc_remove_dai(struct snd_soc_dai *dai, int order)
 {
        int err;
 
-       if (codec_dai && codec_dai->probed &&
-                       codec_dai->driver->remove_order == order) {
-               if (codec_dai->driver->remove) {
-                       err = codec_dai->driver->remove(codec_dai);
+       if (dai && dai->probed &&
+                       dai->driver->remove_order == order) {
+               if (dai->driver->remove) {
+                       err = dai->driver->remove(dai);
                        if (err < 0)
-                               dev_err(codec_dai->dev,
+                               dev_err(dai->dev,
                                        "ASoC: failed to remove %s: %d\n",
-                                       codec_dai->name, err);
+                                       dai->name, err);
                }
-               codec_dai->probed = 0;
+               dai->probed = 0;
        }
 }
 
 static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order)
 {
        struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-       int i, err;
+       int i;
 
        /* unregister the rtd device */
        if (rtd->dev_registered) {
@@ -1054,20 +1053,9 @@ static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order)
 
        /* remove the CODEC DAI */
        for (i = 0; i < rtd->num_codecs; i++)
-               soc_remove_codec_dai(rtd->codec_dais[i], order);
+               soc_remove_dai(rtd->codec_dais[i], order);
 
-       /* remove the cpu_dai */
-       if (cpu_dai && cpu_dai->probed &&
-                       cpu_dai->driver->remove_order == order) {
-               if (cpu_dai->driver->remove) {
-                       err = cpu_dai->driver->remove(cpu_dai);
-                       if (err < 0)
-                               dev_err(cpu_dai->dev,
-                                       "ASoC: failed to remove %s: %d\n",
-                                       cpu_dai->name, err);
-               }
-               cpu_dai->probed = 0;
-       }
+       soc_remove_dai(rtd->cpu_dai, order);
 }
 
 static void soc_remove_link_components(struct snd_soc_card *card, int num,