On 2/7/22 07:25, Cezary Rojewski wrote: > Stream on ADSP firmware is represented by one or more pipelines. Just I have a lot of questions on this one line... what is a 'stream'? 'stream' historically means 'direction' in ALSA. Then we have sdw_stream, which describes how source and sink ports are connected on a platform. We also have DPCM front-ends, visible mostly through the PCM device they expose to users. In windows we have stream effects that are really meant to be on a single dedicated pipeline. other questions: can a stream represent data moving in different directions, e.g. in full-duplex mode. How would a loopback be described? What happens when a data path is split (demux) or merged (mixer)? How is a 'stream' different from a 'path template' that you referred to in Patch RFC 02/13 You would need at least 10 lines of plain English to make sure no one will misunderstand what 'stream' means. > like modules, these are described by a config structure. Add parsing > helpers to support loading such information from the topology file. > > +/* Specifies path behaviour during PCM ->trigger(START) commnand. */ typo: command. > +enum avs_tplg_trigger { > + AVS_TPLG_TRIGGER_AUTO = 0, > + AVS_TPLG_TRIGGER_USERSPACE = 1, /* via sysfs */ The feedback in previous versions was that we should not expose any sysfs interface that would interfere with decisions made by the driver. This is very controversial and a major hurdle to upstream any of this. Debugfs is fine, as suggested by Mark as well " If it's mainly used for debugging then it could be exposed through debugfs with less worry. " > +}; > + > +struct avs_tplg_pplcfg { > + u16 req_size; what does this describe? > + u8 priority; > + bool lp; > + u16 attributes; > + enum avs_tplg_trigger trigger; > +}; > + > +struct avs_tplg_binding { > + char target_tplg_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; > + u32 target_path_tmpl_id; > + u32 target_ppl_id; > + u32 target_mod_id; > + u8 target_mod_pin; you really need to elaborate on what a template is, and how you use a template and a ppl id concurrently. > + u32 mod_id; > + u8 mod_pin; > + u8 is_sink; > +}; > + > #endif