On Thu, Mar 30, 2023 at 4:30 PM Emil Abildgaard Svendsen < EMAS@xxxxxxxxxxxxxxx> wrote: > Slot width should follow the physical width of the format instead of the > data width. > > This is needed for formats like SNDRV_PCM_FMTBIT_S24_LE where physical > width is 32 and data width is 24. By using the physical width, data > won't get misaligned. There are different requirements for this slot width. Some need physical width, Some need format width. We need to be careful about change here. Actually there is .set_tdm_slot API for slot specific setting, please use this API. best regards wang shengjiu > > Signed-off-by: Emil Svendsen <emas@xxxxxxxxxxxxxxx> > --- > sound/soc/fsl/fsl_sai.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c > index 939c6bdd22c4..213e2d462076 100644 > --- a/sound/soc/fsl/fsl_sai.c > +++ b/sound/soc/fsl/fsl_sai.c > @@ -519,13 +519,13 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, > unsigned int channels = params_channels(params); > struct snd_dmaengine_dai_dma_data *dma_params; > struct fsl_sai_dl_cfg *dl_cfg = sai->dl_cfg; > + u32 slot_width = params_physical_width(params); > u32 word_width = params_width(params); > int trce_mask = 0, dl_cfg_idx = 0; > int dl_cfg_cnt = sai->dl_cfg_cnt; > u32 dl_type = FSL_SAI_DL_I2S; > u32 val_cr4 = 0, val_cr5 = 0; > u32 slots = (channels == 1) ? 2 : channels; > - u32 slot_width = word_width; > int adir = tx ? RX : TX; > u32 pins, bclk; > u32 watermark; > -- > 2.34.1 >