[PATCH 4/4] ASoC: audio-graph: tidyup dai_name seting timing
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Mon May 10 03:52:22 CEST 2021
From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
audio-graph is using cpus->dai_name / codecs->dai_name
for dailink->name, but cpus->dai_name might be removed
under simple_parse_node() (= asoc_simple_canonicalize_cpu()).
Thus we need to get dai_name before calling simple_parse_node().
This patch fixup it.
To reduce future confusion, this patch follow same style
for similar parts too.
Fixes: 8859f809c7d5813 ("ASoC: audio-graph: add graph_parse_node()")
Fixes: e51237b8d305225 ("ASoC: audio-graph: add graph_link_init()")
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
sound/soc/generic/audio-graph-card.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
index 0159a4576e9c..f8fc3222710b 100644
--- a/sound/soc/generic/audio-graph-card.c
+++ b/sound/soc/generic/audio-graph-card.c
@@ -295,12 +295,13 @@ static int graph_dai_link_of_dpcm(struct asoc_simple_priv *priv,
dai_link->dynamic = 1;
dai_link->dpcm_merged_format = 1;
+ snprintf(dai_name, sizeof(dai_name),
+ "fe.%pOFP.%s", cpus->of_node, cpus->dai_name);
+
ret = graph_parse_node(priv, cpu_ep, li, 1);
if (ret)
return ret;
- snprintf(dai_name, sizeof(dai_name),
- "fe.%pOFP.%s", cpus->of_node, cpus->dai_name);
/*
* In BE<->BE connections it is not required to create
* PCM devices at CPU end of the dai link and thus 'no_pcm'
@@ -325,13 +326,13 @@ static int graph_dai_link_of_dpcm(struct asoc_simple_priv *priv,
dai_link->no_pcm = 1;
dai_link->be_hw_params_fixup = asoc_simple_be_hw_params_fixup;
+ snprintf(dai_name, sizeof(dai_name),
+ "be.%pOFP.%s", codecs->of_node, codecs->dai_name);
+
ret = graph_parse_node(priv, codec_ep, li, 0);
if (ret < 0)
return ret;
- snprintf(dai_name, sizeof(dai_name),
- "be.%pOFP.%s", codecs->of_node, codecs->dai_name);
-
/* check "prefix" from top node */
port = of_get_parent(ep);
ports = of_get_parent(port);
@@ -371,6 +372,13 @@ static int graph_dai_link_of(struct asoc_simple_priv *priv,
dev_dbg(dev, "link_of (%pOF)\n", cpu_ep);
+ /*
+ * next graph_parse_node() might remove cpus->dai_name.
+ * get dai_name before it.
+ */
+ snprintf(dai_name, sizeof(dai_name),
+ "%s-%s", cpus->dai_name, codecs->dai_name);
+
ret = graph_parse_node(priv, cpu_ep, li, 1);
if (ret < 0)
return ret;
@@ -379,8 +387,6 @@ static int graph_dai_link_of(struct asoc_simple_priv *priv,
if (ret < 0)
return ret;
- snprintf(dai_name, sizeof(dai_name),
- "%s-%s", cpus->dai_name, codecs->dai_name);
ret = graph_link_init(priv, cpu_ep, codec_ep, li, dai_name);
if (ret < 0)
return ret;
--
2.25.1
More information about the Alsa-devel
mailing list