diff mbox series

ASoC: simple-card: Don't create separate link when platform is present

Message ID 20191209135353.17427-1-daniel.baluta@nxp.com
State Accepted
Commit 5525cf07d15f7c7eab619707627c31aa8e39dff1
Headers show
Series ASoC: simple-card: Don't create separate link when platform is present | expand

Commit Message

Daniel Baluta Dec. 9, 2019, 1:53 p.m. UTC
In normal sound case all DAIs are detected as CPU-Codec.
simple_dai_link_of supports the presence of a platform but it counts
it as a CPU DAI resulting in the creation of an extra link.

Adding a platform property to a link description like:

simple-audio-card,dai-link {
	cpu {
		sound-dai = <&sai1>;
	};
	plat {
		sound-dai = <&dsp>;
	};
	codec {
		sound-dai = <&wm8960>;
	}

will result in the creation of two links:
	* sai1 <-> wm8960
	* dsp  <-> wm8960

which is obviously not what we want. We just want one single link
with:
	* sai1 <-> wm8960 (and platform set to dsp).

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>

---
 sound/soc/generic/simple-card.c | 6 ++++++
 1 file changed, 6 insertions(+)

-- 
2.17.1

Comments

Kuninori Morimoto Dec. 10, 2019, 12:09 a.m. UTC | #1
Hi

> In normal sound case all DAIs are detected as CPU-Codec.

> simple_dai_link_of supports the presence of a platform but it counts

> it as a CPU DAI resulting in the creation of an extra link.

> 

> Adding a platform property to a link description like:

> 

> simple-audio-card,dai-link {

> 	cpu {

> 		sound-dai = <&sai1>;

> 	};

> 	plat {

> 		sound-dai = <&dsp>;

> 	};

> 	codec {

> 		sound-dai = <&wm8960>;

> 	}

> 

> will result in the creation of two links:

> 	* sai1 <-> wm8960

> 	* dsp  <-> wm8960

> 

> which is obviously not what we want. We just want one single link

> with:

> 	* sai1 <-> wm8960 (and platform set to dsp).

> 

> Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>

> ---


Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>


Thank you for your help !!
Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
index 10b82bf043d1..55e9f8800b3e 100644
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@ -371,6 +371,7 @@  static int simple_for_each_link(struct asoc_simple_priv *priv,
 	do {
 		struct asoc_simple_data adata;
 		struct device_node *codec;
+		struct device_node *plat;
 		struct device_node *np;
 		int num = of_get_child_count(node);
 
@@ -381,6 +382,9 @@  static int simple_for_each_link(struct asoc_simple_priv *priv,
 			ret = -ENODEV;
 			goto error;
 		}
+		/* get platform */
+		plat = of_get_child_by_name(node, is_top ?
+					    PREFIX "plat" : "plat");
 
 		/* get convert-xxx property */
 		memset(&adata, 0, sizeof(adata));
@@ -389,6 +393,8 @@  static int simple_for_each_link(struct asoc_simple_priv *priv,
 
 		/* loop for all CPU/Codec node */
 		for_each_child_of_node(node, np) {
+			if (plat == np)
+				continue;
 			/*
 			 * It is DPCM
 			 * if it has many CPUs,