+struct avs_path { + u32 dma_id;
that is very surprising...
This would seem to limit the concept of an avs path to a single host DMA channel, which somewhat contradicts that there can be multiple pipelines in the same path, or that a path can contain mixers.
And even if this is a single dma, what does this represent? the stream_tag? the BE DMA for SSP/DMIC?
Please clarify the concepts first, it's frustrating to discover this at patch 8.
A single path is tied to either FE or BE. So at most to a single, user-visible endpoint if it's FE. If there are more FEs, then we move to NxFE <-> 1xBE scenario. You can have many pipelines forming the path - most of the pipelines do not contain module connected to any gateway (HDA/SSP/DMIC etc.) anyway.
This should have been explained in the cover letter.
Assuming that there's a single Back-End that can handle all possible routing cases is a very narrow interpretation of how DPCM is supposed to be used, and it adds quite a few opens on routing changes that can't be handled with regular triggers. What happens when not all interfaces are handled by the DSP 'gateway' is also interesting.