Hi,
The following series will enable multi-stream support for playback and capture streams. Currently only a single PCM can be connected to a DAI, with the multi-stream support it is possible to connect multiple PCMs to a single DAI.
To achieve this we need to make sure that DAIs/AIF are only set up once since other stream could be connected to it later.
We also need to introduce reference or use counting for widgets to make sure that they are not going to be destroyed while other streams are still using them.
With the multi-stream support we also need to extend our current locking scheme which worked well for simple paths.
The first patch was sent to the mailing list, but it is not yet applied and I have included in this series as it is a direct dependency: https://lore.kernel.org/alsa-devel/20230117121615.25690-1-peter.ujfalusi@lin...
Regards, Peter --- Peter Ujfalusi (3): ASoC: SOF: Avoid double decrementing use_count in sof_widget_setup on error ASoC: SOF: Protect swidget->use_count with mutex for kcontrol access race ASoC: SOF: ipc4-pcm: Do not run the trigger pipelines if no spipe is stored
Ranjani Sridharan (15): ASoC: SOF: ipc4-topology: No need to unbind routes within a pipeline ASoC: soc-pcm: Export widget_in_list() ASoC: SOF: sof-audio: Set up/free DAI/AIF widgets only once ASoC: SOF: sof-audio: Only process widgets in the connected widget list ASoC: SOF: pcm: do not free widgets during suspend trigger ASoC: SOF: topology: Set IPC-specific trigger order for DAI links ASoC: SOF: Introduce PCM setup/free PCM IPC ops ASoC: SOF: ipc4-pcm: Define pcm_setup/free ops ASoC: SOF: ipc4: Add flag to skip triggering pipelines during FE DAI trigger ASoC: SOF: sof-audio: Populate the PCM stream pipeline_info ASoC: SOF: ipc4-pcm: Use the PCM stream's pipeline_info during trigger ASoC: SOF: Introduce struct snd_sof_pipeline ASoC: SOF: ipc4-pcm: Rename 'data' variable to trigger_list ASoC: SOF: ipc4-pcm: Implement pipeline trigger reference counting ASoC: SOF: ipc4-topology: Protect pipeline free with mutex
include/sound/soc-dpcm.h | 2 + include/sound/sof/ipc4/header.h | 3 + sound/soc/soc-pcm.c | 3 +- sound/soc/sof/core.c | 1 + sound/soc/sof/intel/hda-dai.c | 92 ++------- sound/soc/sof/ipc3-control.c | 46 +++-- sound/soc/sof/ipc3-topology.c | 32 ++- sound/soc/sof/ipc4-control.c | 33 ++- sound/soc/sof/ipc4-pcm.c | 343 +++++++++++++++++++++++++------- sound/soc/sof/ipc4-priv.h | 2 + sound/soc/sof/ipc4-topology.c | 48 ++++- sound/soc/sof/ipc4-topology.h | 12 ++ sound/soc/sof/ipc4.c | 2 + sound/soc/sof/pcm.c | 5 +- sound/soc/sof/sof-audio.c | 226 ++++++++++++++------- sound/soc/sof/sof-audio.h | 54 ++++- sound/soc/sof/sof-priv.h | 1 + sound/soc/sof/topology.c | 114 +++++++---- 18 files changed, 714 insertions(+), 305 deletions(-)