Re: [PATCH 3/5] ASoC: fsl-asoc-card: add channel and rate constraints for CS42888

From: Shengjiu Wang

Date: Mon Apr 27 2026 - 06:50:47 EST


On Sat, Apr 25, 2026 at 12:09 AM Mark Brown <broonie@xxxxxxxxxx> wrote:
>
> On Fri, Apr 24, 2026 at 06:38:04PM +0800, Shengjiu Wang wrote:
>
> > The CS42888 codec has 4 I2S lanes with 2 channels per lane. Using odd
> > channel counts (3, 5, 7) causes data misalignment in the I2S frame,
> > resulting in incorrect channel mapping. Only mono and even channel
> > counts (1, 2, 4, 6, 8) work correctly.
>
> > +static int fsl_asoc_card_startup(struct snd_pcm_substream *substream)
> > +{
> > + struct snd_soc_pcm_runtime *rtd = substream->private_data;
> > + struct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);
> > + struct snd_pcm_runtime *runtime = substream->runtime;
> > + static struct snd_pcm_hw_constraint_list constraint_rates;
> > + static struct snd_pcm_hw_constraint_list constraint_channels;
>
> This makes the constraints global for all substreams, given that the
> Freescale SoCs tend to have multiple DAIs and have things like direct
> PDM inputs I'd expect it'd be relatively common to have disjoint
> constraints.

Thanks for the comments. I will refine it.

Best regards
Shengjiu Wang