On 4. 4. 2022, at 14:28, Mark Brown broonie@kernel.org wrote:
On Thu, Mar 31, 2022 at 02:04:47AM +0200, Martin Povišer wrote:
+#if 0 dev_err(rtd->card->dev, "N cpus to M codecs link is not supported yet\n"); return -EINVAL; +#endif
cpu_dai = asoc_rtd_to_cpu(rtd, 0);
We need to figure out an interface for describing which CODEC/CPU combinations are connected to each other. I'm not seeing a great way to do that right now, probably some side data table is going to be needed, or perhaps the CPU DAI drivers can be persuaded to only have one DAI actually register and claim to support more channels? I'm not sure how a configuraiton like this is going to work at userspace level if the multiple CPU DAIs end up being visible...
To understand the issue better: How could the multiple CPU DAIs be visible from userspace?
What about this interim solution: In case of N-to-M links we put in the most restrictive condition for checking capture/playback stream validity: we check all of the CPU DAIs. Whatever ends up being the proper solution later can only be less restrictive than this.
As a reminder what happens on the Macs: the platform driver drives all the CPU-side I2S ports that belong to the link with the same data, so the particular CPU/CODEC wiring doesn’t matter.