[alsa-devel] [PATCH 04/13] ASoC: dapm: add driver prefix matching for snd_soc_dapm_add_route()
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Fri Mar 13 02:22:34 CET 2015
From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
Current DAPM will lost correct route settings if some CPU/Codec was using
same stream name, and it will be problem when DPCM case.
For example, stream name of Renesas sound drver / ak4642 / dummy for DPCM
have same name as "Playback", like below
FE CPU (rsnd): "DAI0 Playback"
Codec (dummy): "Playback"
BE CPU (dummy): "Playback"
Codec (ak4642): "Playback"
Then, "Playback" - "DAI0 Playback" can't match correctly. This patch adds
"driver name" prefix for this case.
We can use "ak4642-hifi Playback" - "DAI0 Playback" here.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
sound/soc/soc-dapm.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index d4b331d..722b922 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -2417,10 +2417,12 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
{
struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w;
struct snd_soc_dapm_widget *wtsource = NULL, *wtsink = NULL;
+ struct snd_soc_dai *w_dai;
const char *sink;
const char *source;
char prefixed_sink[80];
char prefixed_source[80];
+ char _w_name[80], *w_name;
const char *prefix;
int ret;
@@ -2442,6 +2444,17 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
* current DAPM context
*/
list_for_each_entry(w, &dapm->card->widgets, list) {
+ w_dai = w->priv;
+ w_name = NULL;
+ if (w_dai) {
+ snprintf(_w_name, sizeof(_w_name), "%s %s",
+ w_dai->name, w->name);
+
+ w_name = _w_name;
+ }
+
+ snd_soc_dapm_route_scan(w, dapm, w_name, &wsource, &wtsource, source);
+ snd_soc_dapm_route_scan(w, dapm, w_name, &wsink, &wtsink, sink);
snd_soc_dapm_route_scan(w, dapm, w->name, &wsource, &wtsource, source);
snd_soc_dapm_route_scan(w, dapm, w->name, &wsink, &wtsink, sink);
}
--
1.9.1
More information about the Alsa-devel
mailing list