External email: Use caution opening links or attachments
Hi Sameer
The simple-card driver supports multiple CPU and single Codec entries(snip)
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.
@@ -137,8 +136,13 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,Checking node name is maybe nice idea,
* 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;
+ }
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