OSDN Git Service

ASoC: soc-core: merge soc_remove_component() and soc_cleanup_component()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 6 Nov 2019 01:07:46 +0000 (10:07 +0900)
committerMark Brown <broonie@kernel.org>
Tue, 12 Nov 2019 18:28:02 +0000 (18:28 +0000)
having both soc_remove_component() and soc_cleanup_component() is
very confusable. Let's merge these.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87o8xphkwt.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index d80d485..11cbd79 100644 (file)
@@ -1201,8 +1201,16 @@ static void soc_set_name_prefix(struct snd_soc_card *card,
        soc_set_of_name_prefix(component);
 }
 
-static void soc_cleanup_component(struct snd_soc_component *component)
+static void soc_remove_component(struct snd_soc_component *component,
+                                int probed)
 {
+
+       if (!component->card)
+               return;
+
+       if (probed)
+               snd_soc_component_remove(component);
+
        /* For framework level robustness */
        snd_soc_component_set_jack(component, NULL, NULL);
 
@@ -1213,22 +1221,13 @@ static void soc_cleanup_component(struct snd_soc_component *component)
        snd_soc_component_module_put_when_remove(component);
 }
 
-static void soc_remove_component(struct snd_soc_component *component)
-{
-       if (!component->card)
-               return;
-
-       snd_soc_component_remove(component);
-
-       soc_cleanup_component(component);
-}
-
 static int soc_probe_component(struct snd_soc_card *card,
                               struct snd_soc_component *component)
 {
        struct snd_soc_dapm_context *dapm =
                snd_soc_component_get_dapm(component);
        struct snd_soc_dai *dai;
+       int probed = 0;
        int ret;
 
        if (!strcmp(component->name, "snd-soc-dummy"))
@@ -1284,6 +1283,7 @@ static int soc_probe_component(struct snd_soc_card *card,
             dapm->bias_level != SND_SOC_BIAS_OFF,
             "codec %s can not start from non-off bias with idle_bias_off==1\n",
             component->name);
+       probed = 1;
 
        /* machine specific init */
        if (component->init) {
@@ -1312,7 +1312,7 @@ static int soc_probe_component(struct snd_soc_card *card,
 
 err_probe:
        if (ret < 0)
-               soc_cleanup_component(component);
+               soc_remove_component(component, probed);
 
        return ret;
 }
@@ -1414,7 +1414,7 @@ static void soc_remove_link_components(struct snd_soc_card *card)
                                if (component->driver->remove_order != order)
                                        continue;
 
-                               soc_remove_component(component);
+                               soc_remove_component(component, 1);
                        }
                }
        }
@@ -1608,7 +1608,7 @@ static void soc_remove_aux_devices(struct snd_soc_card *card)
        for_each_comp_order(order) {
                for_each_card_auxs_safe(card, comp, _comp) {
                        if (comp->driver->remove_order == order)
-                               soc_remove_component(comp);
+                               soc_remove_component(comp, 1);
                }
        }
 }