From: Daniel Baluta daniel.baluta@nxp.com
A DAI link has 3 components: * CPU * platform * codec(s)
A component is specified via: * name * of_node * dai_name
In order to avoid confusion when building a sound card we disallow matching by both name and of_node (1).
soc_check_tplg_fes allows overriding certain BE links by overriding BE link name. This doesn't work well if BE link was specified via DT, because we end up with a link with both name and of_node specified which is conflicting with (1).
In order to fix this we need to: * override of_node if component was specified via DT * override name, otherwise.
Signed-off-by: Daniel Baluta daniel.baluta@nxp.com --- sound/soc/soc-core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 522bae73640a..7a1c011a7fe0 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1648,7 +1648,11 @@ static void soc_check_tplg_fes(struct snd_soc_card *card) dev_err(card->dev, "init platform error"); continue; } - dai_link->platforms->name = component->name; + + if (component->dev->of_node) + dai_link->platforms->of_node = component->dev->of_node; + else + dai_link->platforms->name = component->name;
/* convert non BE into BE */ if (!dai_link->no_pcm) {