]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: soc-card: add snd_soc_card_set_topology_name()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 28 May 2026 00:48:01 +0000 (00:48 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 28 May 2026 11:18:29 +0000 (12:18 +0100)
Some drivers want to use topology name, but currently each drivers are
setting it by own method.
This patch adds new snd_soc_card_set_topology_name() and do it by
same method.

Almost all driver doesn't set topology name, let's remove fixed name
array, and use devm_kasprintf() instead.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://patch.msgid.link/878q942wce.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc-card.h
include/sound/soc.h
sound/soc/mediatek/common/mtk-soundcard-driver.c
sound/soc/soc-card.c
sound/soc/soc-core.c
sound/soc/sof/nocodec.c

index ecc02e955279fdfa3f10d116eeb5a2d7271cc91c..1f1e7d45f55335a8c07cb7d7ae1d4bdb8dc426d5 100644 (file)
@@ -47,6 +47,8 @@ int snd_soc_card_late_probe(struct snd_soc_card *card);
 void snd_soc_card_fixup_controls(struct snd_soc_card *card);
 int snd_soc_card_remove(struct snd_soc_card *card);
 
+void snd_soc_card_set_topology_name(struct snd_soc_card *card, const char *preifx);
+
 int snd_soc_card_set_bias_level(struct snd_soc_card *card,
                                struct snd_soc_dapm_context *dapm,
                                enum snd_soc_bias_level level);
index 77a7539ef37fb379bde491d3b4e4d5aacf4ccbfe..ed892183506945f2c6bf90d0cf087d563c565d9e 100644 (file)
@@ -990,7 +990,7 @@ struct snd_soc_card {
        bool pci_subsystem_set;
 #endif /* CONFIG_PCI */
 
-       char topology_shortname[32];
+       char *topology_shortname;
 
        struct device *dev;
        struct snd_card *snd_card;
@@ -1087,7 +1087,6 @@ struct snd_soc_card {
 #endif
        /* bit field */
        unsigned int instantiated:1;
-       unsigned int topology_shortname_created:1;
        unsigned int fully_routed:1;
        unsigned int probed:1;
        unsigned int component_chaining:1;
index a2a30a87a359f4a794360ac8959bf66a380e495e..cdff7322426a903dc00857cdeba5156af14d0e4a 100644 (file)
@@ -289,11 +289,8 @@ int mtk_soundcard_common_probe(struct platform_device *pdev)
                soc_card_data->sof_priv = pdata->sof_priv;
                card->probe = mtk_sof_card_probe;
                card->late_probe = mtk_sof_card_late_probe;
-               if (!card->topology_shortname_created) {
-                       snprintf(card->topology_shortname, 32, "sof-%s", card->name);
-                       card->topology_shortname_created = true;
-               }
-               card->name = card->topology_shortname;
+
+               snd_soc_card_set_topology_name(card, "sof");
        }
 
        /*
index 235427d69061737fa10bfcd7e2e8ba0e83202444..282d666dae9ec5413dadb8633c74a0177973d539 100644 (file)
@@ -246,3 +246,16 @@ void snd_soc_card_remove_dai_link(struct snd_soc_card *card,
                card->remove_dai_link(card, dai_link);
 }
 EXPORT_SYMBOL_GPL(snd_soc_card_remove_dai_link);
+
+void snd_soc_card_set_topology_name(struct snd_soc_card *card, const char *prefix)
+{
+       if (!prefix || !card->name)
+               return;
+
+       if (!card->topology_shortname)
+               card->topology_shortname = devm_kasprintf(card->dev, GFP_KERNEL,
+                                                         "%s-%s", prefix, card->name);
+
+       card->name = card->topology_shortname;
+}
+EXPORT_SYMBOL_GPL(snd_soc_card_set_topology_name);
index ec744b9d6fd1e5d7c95909d8e0cedc8c8847cee9..c0599031a3e4eb59109801c2d74dadaf8147bf4e 100644 (file)
@@ -1985,7 +1985,6 @@ static inline int snd_soc_set_dmi_name(struct snd_soc_card *card)
 static void soc_check_tplg_fes(struct snd_soc_card *card)
 {
        struct snd_soc_component *component;
-       const struct snd_soc_component_driver *comp_drv;
        struct snd_soc_dai_link *dai_link;
        int i;
 
@@ -2046,21 +2045,7 @@ match:
                }
 
                /* Inform userspace we are using alternate topology */
-               if (component->driver->topology_name_prefix) {
-
-                       /* topology shortname created? */
-                       if (!card->topology_shortname_created) {
-                               comp_drv = component->driver;
-
-                               snprintf(card->topology_shortname, 32, "%s-%s",
-                                        comp_drv->topology_name_prefix,
-                                        card->name);
-                               card->topology_shortname_created = true;
-                       }
-
-                       /* use topology shortname */
-                       card->name = card->topology_shortname;
-               }
+               snd_soc_card_set_topology_name(card, component->driver->topology_name_prefix);
        }
 }
 
index c0c906a78ebae4e9775a6af2628c40735d249d34..11a95dba3c9cf632af163dcde8ea861f58e201c6 100644 (file)
@@ -15,7 +15,6 @@
 
 static struct snd_soc_card sof_nocodec_card = {
        .name = "nocodec", /* the sof- prefix is added by the core */
-       .topology_shortname = "sof-nocodec",
        .owner = THIS_MODULE
 };
 
@@ -89,9 +88,10 @@ static int sof_nocodec_probe(struct platform_device *pdev)
        int ret;
 
        card->dev = &pdev->dev;
-       card->topology_shortname_created = true;
        mach = pdev->dev.platform_data;
 
+       snd_soc_card_set_topology_name(card, "sof");
+
        ret = sof_nocodec_setup(card->dev, mach->mach_params.num_dai_drivers,
                                mach->mach_params.dai_drivers);
        if (ret < 0)