diff options
author | Arun Shamanna Lakshmi <aruns@nvidia.com> | 2014-01-15 13:03:16 -0800 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-01-17 18:56:39 +0000 |
commit | bd23c5b661858446267f4d6b2fb4edd8eb710dda (patch) | |
tree | ccbf981df05f1816b30ae2517172b9243d3ab1a3 /sound | |
parent | f7d3c17096f6cbca8f0113d5a092ffcc72c7bf41 (diff) | |
download | op-kernel-dev-bd23c5b661858446267f4d6b2fb4edd8eb710dda.zip op-kernel-dev-bd23c5b661858446267f4d6b2fb4edd8eb710dda.tar.gz |
ASoC: dapm: Fix double prefix addition
The prefix for the codec driver can be used during dual identical
codec usecases. However, dapm adds prefix twice for codec DAI widget
in snd_soc_dapm_add_route API.
This change is to avoid double prefix addition for codec DAI widget
and is needed while using identical dual codecs.
Signed-off-by: Songhee Baek <sbaek@nvidia.com>
Signed-off-by: Arun Shamanna Lakshmi <aruns@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/soc-dapm.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 2a44fe9..dc8ff13 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -2476,7 +2476,8 @@ err: } static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, - const struct snd_soc_dapm_route *route) + const struct snd_soc_dapm_route *route, + unsigned int is_prefixed) { struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w; struct snd_soc_dapm_widget *wtsource = NULL, *wtsink = NULL; @@ -2486,7 +2487,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, char prefixed_source[80]; int ret; - if (dapm->codec && dapm->codec->name_prefix) { + if (dapm->codec && dapm->codec->name_prefix && !is_prefixed) { snprintf(prefixed_sink, sizeof(prefixed_sink), "%s %s", dapm->codec->name_prefix, route->sink); sink = prefixed_sink; @@ -2614,7 +2615,7 @@ int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm, mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT); for (i = 0; i < num; i++) { - r = snd_soc_dapm_add_route(dapm, route); + r = snd_soc_dapm_add_route(dapm, route, false); if (r < 0) { dev_err(dapm->dev, "ASoC: Failed to add route %s -> %s -> %s\n", route->source, @@ -3670,7 +3671,7 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card) cpu_dai->codec->name, r.source, codec_dai->platform->name, r.sink); - snd_soc_dapm_add_route(&card->dapm, &r); + snd_soc_dapm_add_route(&card->dapm, &r, true); } /* connect BE DAI capture if widgets are valid */ @@ -3681,7 +3682,7 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card) codec_dai->codec->name, r.source, cpu_dai->platform->name, r.sink); - snd_soc_dapm_add_route(&card->dapm, &r); + snd_soc_dapm_add_route(&card->dapm, &r, true); } } |