Are you suggesting that we have dailink for each usecase like:
"headset capture"
"Analog MIC1 capture"
"Analog MIC2 Capture"
...
"Analog MIC4 Capture"
...
"DMIC0 capture"
"DMIC1 Capture"
"DMIC2 Capture"
...
"DMIC7 Capture"
..
"Headset Playback"
"Ear Playback"
..
"Aux Playback"
...
this is not really doable!
No, what I was saying is that you need to define multiple streams e.g.
- headset capture (configured with or without click suppression)
- mic capture (configured with AMICs or DMICs)
- playback (or possibly different endpoint specific streams depending on whether concurrency between endpoint is possible)
if you change the configuration, you have to tear down the stream and reconfigure it - and for this we already have the required API and you can guarantee that the configuration for that stream is consistent between master and slave(s).
All am saying is that codec can decide which ports it has to select based on mixer setting before the stream is setup/started. This updated mapping between slv port and master ports is passed as part of the port_config in sdw_stream_add_slave().
if you completely remove the stream and re-add it with updated configuration things should work.