]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: fsl-asoc-card: enable dpcm_merged_chan flag for ASRC frontend
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 29 Apr 2026 10:00:23 +0000 (18:00 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 30 Apr 2026 12:07:55 +0000 (21:07 +0900)
When using ASRC in DPCM mode, the backend DAI (codec) may have channel
constraints that differ from the frontend. For example, the ASRC can
support 1-8 channels, but the codec might only support stereo (2 channels).

Without dpcm_merged_chan, userspace can open the frontend with unsupported
channel counts, leading to errors when the backend is configured.

Enable dpcm_merged_chan to merge backend channel constraints to the
frontend, ensuring userspace only sees valid channel configurations.

This fixes issues where applications attempt to use channel counts
that the backend codec doesn't support.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260429100028.2739711-2-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl-asoc-card.c

index 70a6159430ed39dc81ac78fa881a94eada7351ff..41cd2fc2ea560b365b92b0b35cd216b1990581b0 100644 (file)
@@ -989,6 +989,7 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
 
        if (asrc_pdev) {
                /* DPCM DAI Links only if ASRC exists */
+               priv->dai_link[1].dpcm_merged_chan = 1;
                priv->dai_link[1].cpus->of_node = asrc_np;
                priv->dai_link[1].platforms->of_node = asrc_np;
                for_each_link_codecs((&(priv->dai_link[2])), codec_idx, codec_comp) {