
It's not only the mismatch but also the design limitation. According to the information from google, the board (samus) only uses two microphone so 3 or 4 channel recording are not supported. That's the reason we leverage the constraint from other machine driver (like kbl_da7219_max98357a.c) to remove the 3 and 4 channel recording option.
The design limitation is already handled by the fact that the SSP operates in 2ch mode, so it's a different case from KBL where indeed the DMIC-based back-end can support 4 channels.
The difference after the constraint is implemented is that the snd_pcm_hw_params_set_channels() function will return error (Invalid argument) when channel number is 3 or 4 so the application knows the configuration is not supported.
I get the error, I am just wondering if the fix is at the right location. I'll look into it, give me until tomorrow.
I think I got your point. I cherry-pick these commits back to v3.14 branch to fix the FE/BE mismatch without adding constraint in machine driver. Thanks.
b073ed4e ASoC: soc-pcm: DPCM cares BE format f4c277b8 ASoC: soc-pcm: DPCM cares BE channel constraint 4f2bd18b ASoC: dpcm: extend channel merging to the backend cpu dai 435ffb76 ASoC: dpcm: rework runtime stream merge baacd8d1 ASoC: dpcm: add rate merge to the BE stream merge