[PATCH v4 12/23] ASoC: simple-card: Support DPCM DAI link with multiple Codecs

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Jun 29 03:24:37 CEST 2020


Hi Sameer

> The simple-card driver supports multiple CPU and single Codec entries
> for DPCM DAI links. In some cases it is required to have multiple
> CPU/Codecs. Currently parsing logic for DPCM link loops over all
> children of DAI link but assumes that there is a single Codec entry.
> When DAI link has multiple Codecs it considers only the first Codec
> entry and remaining Codecs are wrongly treated as CPU. This happens
> because first Codec is used as reference for parsing all other child
> nodes.
(snip)
> @@ -137,8 +136,13 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
>  	 * Codec |return|Pass
>  	 * np
>  	 */
> -	if (li->cpu == (np == codec))
> -		return 0;
> +	if (li->cpu) {
> +		if (!strcmp(np->name, "codec"))
> +			return 0;
> +	} else {
> +		if (!strcmp(np->name, "cpu"))
> +			return 0;
> +	}

Checking node name is maybe nice idea,
but please consider "prefix" here.

Maybe base issue for multiple codec support
is that simple_for_each_link() is caring first codec only ?

	simple_for_each_link(...)
	{
		...
		do {
=>			/* get codec */
=>			codec = of_get_child_by_name(...);
			...
		}
	}

Remove above and having simple_node_is_codec(np, xxx) function
or something can help it ?


Thank you for your help !!

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list