On 2/7/22 07:25, Cezary Rojewski wrote:
Declare representatives for all crucial elements which stream on ADSP side is made of. That covers pipelines and modules subject which are presented by struct avs_path_pipeline and avs_path_module respetively.
respectively
While struct avs_path_binding and struct avs_path do not represent any object on firmware side directly, they are needed to help track the interconnections and membership of every pipeline and module created.
+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.
- struct list_head ppl_list;
- u32 state;
- struct avs_tplg_path *template;
- struct avs_dev *owner;
- /* device path management */
- struct list_head node;
+};
+struct avs_path_binding {
- struct avs_path_module *source;
- u8 source_pin;
- struct avs_path_module *sink;
- u8 sink_pin;
- struct avs_tplg_binding *template;
I must admit not clearly seeing how the definitions of 'avs_path_binding' and 'avs_tplg_binding' are related.
More specifically, having a template for something that directly connects a source to a sink is far from intuitive.
- struct avs_path_pipeline *owner;
- /* pipeline bindings management */
- struct list_head node;
+};
+#endif