ASoC: topology: Unify kcontrol removal code
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Fri, 27 Jan 2023 23:11:10 +0000 (00:11 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 30 Jan 2023 16:56:40 +0000 (16:56 +0000)
Functions removing bytes, enum and mixer kcontrols are identical. Unify
them under one function and use it to free associated kcontrols.

Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/20230127231111.937721-11-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index 6689cf44464cbfeaf5f17cb7870736e314de8f18..9f527d9baf1cb84049c4f08edd56edde84d5fb91 100644 (file)
@@ -350,41 +350,9 @@ static int soc_tplg_add_kcontrol(struct soc_tplg *tplg,
                                tplg->dev, k, comp->name_prefix, comp, kcontrol);
 }
 
-/* remove a mixer kcontrol */
-static void soc_tplg_remove_mixer(struct snd_soc_component *comp,
-       struct snd_soc_dobj *dobj, int pass)
-{
-       struct snd_card *card = comp->card->snd_card;
-
-       if (pass != SOC_TPLG_PASS_CONTROL)
-               return;
-
-       if (dobj->ops && dobj->ops->control_unload)
-               dobj->ops->control_unload(comp, dobj);
-
-       snd_ctl_remove(card, dobj->control.kcontrol);
-       list_del(&dobj->list);
-}
-
-/* remove an enum kcontrol */
-static void soc_tplg_remove_enum(struct snd_soc_component *comp,
-       struct snd_soc_dobj *dobj, int pass)
-{
-       struct snd_card *card = comp->card->snd_card;
-
-       if (pass != SOC_TPLG_PASS_CONTROL)
-               return;
-
-       if (dobj->ops && dobj->ops->control_unload)
-               dobj->ops->control_unload(comp, dobj);
-
-       snd_ctl_remove(card, dobj->control.kcontrol);
-       list_del(&dobj->list);
-}
-
-/* remove a byte kcontrol */
-static void soc_tplg_remove_bytes(struct snd_soc_component *comp,
-       struct snd_soc_dobj *dobj, int pass)
+/* remove kcontrol */
+static void soc_tplg_remove_kcontrol(struct snd_soc_component *comp, struct snd_soc_dobj *dobj,
+                                    int pass)
 {
        struct snd_card *card = comp->card->snd_card;
 
@@ -2618,14 +2586,10 @@ int snd_soc_tplg_component_remove(struct snd_soc_component *comp)
                        list) {
 
                        switch (dobj->type) {
-                       case SND_SOC_DOBJ_MIXER:
-                               soc_tplg_remove_mixer(comp, dobj, pass);
-                               break;
-                       case SND_SOC_DOBJ_ENUM:
-                               soc_tplg_remove_enum(comp, dobj, pass);
-                               break;
                        case SND_SOC_DOBJ_BYTES:
-                               soc_tplg_remove_bytes(comp, dobj, pass);
+                       case SND_SOC_DOBJ_ENUM:
+                       case SND_SOC_DOBJ_MIXER:
+                               soc_tplg_remove_kcontrol(comp, dobj, pass);
                                break;
                        case SND_SOC_DOBJ_GRAPH:
                                soc_tplg_remove_route(comp, dobj, pass);