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

Shengjiu Wang shengjiu.wang at gmail.com
Mon Apr 27 20:47:44 AEST 2026


On Sat, Apr 25, 2026 at 12:09 AM Mark Brown <broonie at kernel.org> 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


More information about the Linuxppc-dev mailing list