All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
To: Mark Brown <broonie@kernel.org>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>
Subject: [alsa-devel] [PATCH 3/6] ASoC: soc-core: add soc_setup_card_name()
Date: 02 Oct 2019 14:22:49 +0900	[thread overview]
Message-ID: <874l0rbu1i.wl-kuninori.morimoto.gx@renesas.com> (raw)
In-Reply-To: <878sq3bu2t.wl-kuninori.morimoto.gx@renesas.com>


From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ALSA needs to setup shortname, longname, and driver.
These methods are very similar.
This patch adds new soc_setup_card_name() and setup these.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 sound/soc/soc-core.c | 60 ++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 42 insertions(+), 18 deletions(-)

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index a34000d..f79ffc4 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1905,6 +1905,42 @@ static void soc_check_tplg_fes(struct snd_soc_card *card)
 	}
 }
 
+#define soc_setup_card_name(name, name1, name2, norm)		\
+	__soc_setup_card_name(name, sizeof(name), name1, name2, norm)
+static void __soc_setup_card_name(char *name, int len,
+				  const char *name1, const char *name2,
+				  int normalization)
+{
+	int i;
+
+	snprintf(name, len, "%s", name1 ? name1 : name2);
+
+	if (!normalization)
+		return;
+
+	/*
+	 * Name normalization
+	 *
+	 * The driver name is somewhat special, as it's used as a key for
+	 * searches in the user-space.
+	 *
+	 * ex)
+	 *	"abcd??efg" -> "abcd__efg"
+	 */
+	for (i = 0; i < len; i++) {
+		switch (name[i]) {
+		case '_':
+		case '-':
+		case '\0':
+			break;
+		default:
+			if (!isalnum(name[i]))
+				name[i] = '_';
+			break;
+		}
+	}
+}
+
 static void soc_cleanup_card_resources(struct snd_soc_card *card)
 {
 	struct snd_soc_dai_link *link, *_link;
@@ -2070,24 +2106,12 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
 	/* try to set some sane longname if DMI is available */
 	snd_soc_set_dmi_name(card, NULL);
 
-	snprintf(card->snd_card->shortname, sizeof(card->snd_card->shortname),
-		 "%s", card->name);
-	snprintf(card->snd_card->longname, sizeof(card->snd_card->longname),
-		 "%s", card->long_name ? card->long_name : card->name);
-	snprintf(card->snd_card->driver, sizeof(card->snd_card->driver),
-		 "%s", card->driver_name ? card->driver_name : card->name);
-	for (i = 0; i < ARRAY_SIZE(card->snd_card->driver); i++) {
-		switch (card->snd_card->driver[i]) {
-		case '_':
-		case '-':
-		case '\0':
-			break;
-		default:
-			if (!isalnum(card->snd_card->driver[i]))
-				card->snd_card->driver[i] = '_';
-			break;
-		}
-	}
+	soc_setup_card_name(card->snd_card->shortname,
+			    card->name, NULL, 0);
+	soc_setup_card_name(card->snd_card->longname,
+			    card->long_name, card->name, 0);
+	soc_setup_card_name(card->snd_card->driver,
+			    card->driver_name, card->name, 1);
 
 	if (card->late_probe) {
 		ret = card->late_probe(card);
-- 
2.7.4

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  parent reply	other threads:[~2019-10-02  5:25 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02  5:22 [alsa-devel] [PATCH 0/6][resend] ASoC: soc-core cleanup - step 3 Kuninori Morimoto
2019-10-02  5:22 ` [alsa-devel] [PATCH 1/6] ASoC: soc-core: use devm_kzalloc() for rtd Kuninori Morimoto
2019-10-02 18:55   ` Mark Brown
2019-10-03  0:31     ` Kuninori Morimoto
2019-10-03  0:56       ` Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: use devm_kzalloc() for rtd" to the asoc tree Mark Brown
2019-10-02  5:22 ` [alsa-devel] [PATCH 2/6] ASoC: soc-core: remove soc_remove_dai_links() Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: remove soc_remove_dai_links()" to the asoc tree Mark Brown
2019-10-02  5:22 ` Kuninori Morimoto [this message]
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: add soc_setup_card_name()" " Mark Brown
2019-10-02  5:22 ` [alsa-devel] [PATCH 4/6] ASoC: soc-core: use devm_xxx for component related resource Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: use devm_xxx for component related resource" to the asoc tree Mark Brown
2019-10-02  5:23 ` [alsa-devel] [PATCH 4/6] ASoC: soc-core: use devm_xxx for component related resource Kuninori Morimoto
2019-10-02  5:23 ` [alsa-devel] [PATCH 5/6] ASoC: soc-core: setup card->rtd_num at snd_soc_instantiate_card() Kuninori Morimoto
2019-10-02  7:42   ` Daniel Baluta
2019-10-02  7:59     ` Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-core: setup card->rtd_num at snd_soc_instantiate_card()" to the asoc tree Mark Brown
2019-10-02  5:23 ` [alsa-devel] [PATCH 6/6] ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume() Kuninori Morimoto
2019-10-04 17:52   ` [alsa-devel] Applied "ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume()" to the asoc tree Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874l0rbu1i.wl-kuninori.morimoto.gx@renesas.com \
    --to=kuninori.morimoto.gx@renesas.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.