On Sat, Apr 25, 2026 at 12:09 AM Mark Brown <[email protected]> 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
