>>>> Can you describe the sequence that you used to start them? That may be >>>> useful to understand the criteria you used? >>> I have something like this: >>> >>> FE1 --> Crossbar -> Mixer Input1 | >>> FE2 --> Crossbar -> Mixer Input2 | >>> ... | --> Mixer Output --> >>> ... | >>> FE10 --> Crossbar -> Mixer Input10 | >>> >>> All these FEs are started one after the other. This is an example of >>> 10x1. Similarly we can have 2x1, 3x1 etc., >>> In our system, the crossbar [0] and mixer [1] are separate ASoC >>> components. Basically audio paths consist of a group of ASoC components >>> which are connected back to back. >> Not following. Can you explain how starting FE1 does not change the >> state of the mixer output then? >> >> Or is each 'Crossbar' instance a full-blown BE? In that case you have a >> 1:1 mapping between FE and BE, a *really* simple topology... > > Yes 'Crossbar' exposes multiple ports and it is 1:1 mapping with FE. > Starting FE1 does configure mixer output. Ah ok, now I get the difference with the N:1 topology we used. Thanks for explaining this. >>> In the interim, may be we can have following patch to keep both systems >>> working and keep the discussion going to address the oustanding >>> requirements/issues? >>> >>> diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c >>> index ab25f99..0fbab50 100644 >>> --- a/sound/soc/soc-pcm.c >>> +++ b/sound/soc/soc-pcm.c >>> @@ -1395,7 +1395,13 @@ static int dpcm_add_paths(struct >>> snd_soc_pcm_runtime *fe, int stream, >>> if (!fe->dpcm[stream].runtime && !fe->fe_compr) >>> continue; >>> >>> - if ((be->dpcm[stream].state != >>> SND_SOC_DPCM_STATE_NEW) && >>> + /* >>> + * Filter for systems with 'component_chaining' enabled. >>> + * This helps to avoid unnecessary re-configuration >>> of an >>> + * already active BE on such systems. >>> + */ >>> + if (fe->card->component_chaining && >>> + (be->dpcm[stream].state != >>> SND_SOC_DPCM_STATE_NEW) && >>> (be->dpcm[stream].state != >>> SND_SOC_DPCM_STATE_CLOSE)) >>> continue; >> that wouldn't work. We need to support the STOP and START cases as well. >> > > I meant with flag 'fe->card->component_chaining', which is currently > used by Tegra audio only. Ah yes, this may be a temporary solution that gets us both back to a 'working solution'. Let me give it a try. Good discussion, thanks! -Pierre