]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: soc-core: remove card->dmi_longname
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 28 May 2026 00:46:46 +0000 (00:46 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 4 Jun 2026 10:23:46 +0000 (11:23 +0100)
Current Card has dmi_longname[80] (when CONFIG_DMI), but no need
to have it in Card, we can alloc it. Tidyup it.

This is prepare for Card capsuling

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87a4tk2weh.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-core.c

index ed892183506945f2c6bf90d0cf087d563c565d9e..10ad80f930c2e688e38995e3ed98878bdce15d88 100644 (file)
@@ -976,9 +976,6 @@ struct snd_soc_card {
        const char *long_name;
        const char *driver_name;
        const char *components;
-#ifdef CONFIG_DMI
-       char dmi_longname[80];
-#endif /* CONFIG_DMI */
 
 #ifdef CONFIG_PCI
        /*
index c0599031a3e4eb59109801c2d74dadaf8147bf4e..e96dd4a3f46c76c65f97e3fa812e5d9cfd81b87c 100644 (file)
@@ -1880,12 +1880,12 @@ static int is_dmi_valid(const char *field)
 }
 
 /*
- * Append a string to card->dmi_longname with character cleanups.
+ * Append a string to dmi_longname with character cleanups.
  */
-static void append_dmi_string(struct snd_soc_card *card, const char *str)
+#define DMI_LONGNAME_LEN       80
+static void append_dmi_string(char *dst, const char *str)
 {
-       char *dst = card->dmi_longname;
-       size_t dst_len = sizeof(card->dmi_longname);
+       size_t dst_len = DMI_LONGNAME_LEN;
        size_t len;
 
        len = strlen(dst);
@@ -1929,6 +1929,7 @@ static void append_dmi_string(struct snd_soc_card *card, const char *str)
 static int snd_soc_set_dmi_name(struct snd_soc_card *card)
 {
        const char *vendor, *product, *board;
+       char *dmi_longname;
 
        if (card->long_name)
                return 0; /* long name already set by driver or from DMI */
@@ -1943,27 +1944,31 @@ static int snd_soc_set_dmi_name(struct snd_soc_card *card)
                return 0;
        }
 
-       snprintf(card->dmi_longname, sizeof(card->dmi_longname), "%s", vendor);
-       cleanup_dmi_name(card->dmi_longname);
+       dmi_longname = devm_kzalloc(card->dev, DMI_LONGNAME_LEN, GFP_KERNEL);
+       if (!dmi_longname)
+               return -ENOMEM;
+
+       snprintf(dmi_longname, DMI_LONGNAME_LEN, "%s", vendor);
+       cleanup_dmi_name(dmi_longname);
 
        product = dmi_get_system_info(DMI_PRODUCT_NAME);
        if (product && is_dmi_valid(product)) {
                const char *product_version = dmi_get_system_info(DMI_PRODUCT_VERSION);
 
-               append_dmi_string(card, product);
+               append_dmi_string(dmi_longname, product);
 
                /*
                 * some vendors like Lenovo may only put a self-explanatory
                 * name in the product version field
                 */
                if (product_version && is_dmi_valid(product_version))
-                       append_dmi_string(card, product_version);
+                       append_dmi_string(dmi_longname, product_version);
        }
 
        board = dmi_get_system_info(DMI_BOARD_NAME);
        if (board && is_dmi_valid(board)) {
                if (!product || strcasecmp(board, product))
-                       append_dmi_string(card, board);
+                       append_dmi_string(dmi_longname, board);
        } else if (!product) {
                /* fall back to using legacy name */
                dev_warn(card->dev, "ASoC: no DMI board/product name!\n");
@@ -1971,7 +1976,7 @@ static int snd_soc_set_dmi_name(struct snd_soc_card *card)
        }
 
        /* set the card long name */
-       card->long_name = card->dmi_longname;
+       card->long_name = dmi_longname;
 
        return 0;
 }