[alsa-devel] simple card, asymetrical configuration
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Tue Dec 3 01:54:05 CET 2019
Hi Michael
> sound {
> compatible = "simple-audio-card";
> simple-audio-card,format = "i2s";
> [snip]
> simple-audio-card,bitclock-master = <&dailink0_master>;
> simple-audio-card,frame-master = <&dailink0_master>;
>
> simple-audio-card,cpu at 0 {
> sound-dai = <&sai6>;
> };
>
> simple-audio-card,cpu at 1 {
> sound-dai = <&sai5>;
> };
>
> dailink0_master: simple-audio-card,codec {
> sound-dai = <&wm8904>;
> };
> };
>
> Just for the background, I have hardware with the LS1028A which only
> have unidirectional SAIs. But two of those SAIs (one for playback and
> one for capture) are connected to one codec (with a shared bit and
> frame clock).
>
> So I thought the example in the simple-card bindings makes sense for
> my case. Although I don't really know what "(Mixing)" means.
>
> Nevertheless, using the fragment above, the kernel oopses or fails to
> probe the hardware. I've traced that back to the following:
> - the count is correct: the kernel reports "link 2, dais 3, ccnf
> 0". please note the 3 dais here.
> - but simple_dai_link_of() will always "allocate" two dais from the
> pool:
>
> cpu_dai =
> dai_props->cpu_dai = &priv->dais[li->dais++];
> codec_dai =
> dai_props->codec_dai = &priv->dais[li->dais++];
>
> While this still works for the first link, the second one will fail
> because codec_dai will not be valid.
>
> Btw, converting that to two explicit dai-link nodes, the dai count
> will be 4 and it will work.
>
> Is my use case correct or should I use the two explicit dai-link
> nodes? But in any case there seems to be a bug in simple-card.
I guess you want to use "simple-scu-audio-card"
instead of "simple-audio-card" in this case ?
sound {
- compatible = "simple-audio-card";
+ compatible = "simple-scu-audio-card";
Thank you for your help !!
Best regards
---
Kuninori Morimoto
More information about the Alsa-devel
mailing list