we are evaluating the use of an extension board with four ADAU1761 codecs in combination with a ZedBoard. The goal is to use all codecs as a single 8 channel audio device in ALSA. Currently we are running a 3.10 kernel with a modified ADAU1761 driver and I2S IP-Core we cloned from the Analog Devices git repository. However, we didn't have much success until now.
What is working so far: We can use the first codec of the extension board without problems. When adding a second codec as an auxiliary device the second codec is probed correctly and can be configured via alsamixer. Unfortunately, the necessary clocks when using aplay or arecord are not enabled for the second codec.
Another approach we recently investigated was the use of several (i.e. two as of now) DAI links - one for each codec. This way we can use both codecs independently, but they are recognised by ALSA as two devices on the same card, which is not what we need. Also there are problems with the DMA transfer using this approach, leading to buffer underruns, overruns and sample disalignments. This is probably because both codecs use the same DMA channels.
We are aware of the fact that ALSA knows subdevices, but we couldn't get much information about this from the developer's point of view. It seems subdevices are used with PCI devices and not implemented in the ASoC part (or at least none of the drivers use it).
That's as far as we could get. Is there anyone who is or was working on a similar driver? Maybe we didn't setup the routes and widgets correctly so the routes are broken, so the widgets are not marked as dirty? Or do we have to tell ALSA explicitly which input and output widgets to use for which channel?
Achim and Christopher