ASoC: dapm: Modify widget stream name according to prefix
authorKoro Chen <koro.chen@mediatek.com>
Mon, 11 May 2015 02:36:53 +0000 (10:36 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 6 Aug 2015 23:32:11 +0000 (00:32 +0100)
commit fdb6eb0a12871d5bfaf266c5a0d5259a5437a72f upstream.

When there is prefix specified, currently we will add this prefix in
widget->name, but not in widget->sname.
it causes failure at snd_soc_dapm_link_dai_widgets:

if (!w->sname || !strstr(w->sname, dai_w->name))

because dai_w->name has prefix added, but w->sname does not.
We should also add prefix for stream name

Signed-off-by: Koro Chen <koro.chen@mediatek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
[bwh: Backported to 3.2:
 - Adjust context
 - s/prefix/dapm->codec->name_prefix]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
sound/soc/soc-dapm.c

index 1d83a40..3dc1b8a 100644 (file)
@@ -2675,12 +2675,18 @@ int snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
                kfree(w);
                return -ENOMEM;
        }
-       if (dapm->codec && dapm->codec->name_prefix)
+       if (dapm->codec && dapm->codec->name_prefix) {
                snprintf(w->name, name_len, "%s %s",
                        dapm->codec->name_prefix, widget->name);
-       else
+               if (widget->sname)
+                       w->sname = kasprintf(GFP_KERNEL, "%s %s",
+                                            dapm->codec->name_prefix,
+                                            widget->sname);
+       } else {
                snprintf(w->name, name_len, "%s", widget->name);
-
+               if (widget->sname)
+                       w->sname = kasprintf(GFP_KERNEL, "%s", widget->sname);
+       }
        switch (w->id) {
        case snd_soc_dapm_switch:
        case snd_soc_dapm_mixer: