summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.cirrus.com>2026-03-10 17:18:14 +0300
committerMark Brown <broonie@kernel.org>2026-03-10 17:52:54 +0300
commit66170cc7ed59fb7e1e192e53f1d690bd04e8c720 (patch)
treef3eb479d1de255402c494b9e6964314f571367a4
parentf8f0c68c75214e326c0d4cbcab8ecab882201f48 (diff)
downloadlinux-66170cc7ed59fb7e1e192e53f1d690bd04e8c720.tar.xz
ASoC: wm_adsp: Convert '/' to '-' when normalizing firmware filenames
Don't preserve '/' in firmware filename fields - convert it to '-' like other punctuation characters. The code originally normalized the entire string, including the directory prefix. To prevent breaking the directory it had to preserve '/' characters in the name, but this meant that the system name and ALSA prefix must not contain those characters. It's trivial to skip the directory name prefix and start the normalization after it, and that means the normalization does not need to make a special case for '/'. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Link: https://patch.msgid.link/20260310141817.1871794-8-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/wm_adsp.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index 9f39db680e07..74c503fc3088 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -776,16 +776,15 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp,
return -ENOMEM;
/*
- * Make sure that filename is lower-case and any non alpha-numeric
- * characters except full stop and forward slash are replaced with
- * hyphens.
+ * Make sure that filename after dir is lower-case and any non-alpha-numeric
+ * characters except full-stop are replaced with hyphens.
*/
- s = *filename;
+ s = *filename + strlen(dir);
while (*s) {
c = *s;
if (isalnum(c))
*s = tolower(c);
- else if ((c != '.') && (c != '/'))
+ else if (c != '.')
*s = '-';
s++;
}