From: Shengjiu Wang Date: Fri, 30 Apr 2021 08:21:56 +0000 (+0800) Subject: LF-3724-9: ASoC: fsl_sai: Set proper burst size for multi-fifo case X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~115 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=ef95c35647c814a7e817389dbd739e72b6837060;p=linux.git LF-3724-9: ASoC: fsl_sai: Set proper burst size for multi-fifo case multi fifo sdma script needs the maxburst = words_per_fifo * pins And the update the watermark level accordingly. Signed-off-by: Shengjiu Wang Reviewed-by: Robin Gong --- diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index 4303df1788f3..68f69fb03eec 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -646,16 +646,24 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream, sai->audio_config[tx].words_per_fifo = min(slots, channels); sai->audio_config[tx].dst_fifo_num = pins; sai->audio_config[tx].dst_fifo_off = dl_cfg[dl_cfg_idx].offset[tx]; - sai->dma_params_tx.maxburst = FSL_SAI_MAXBURST_TX * pins; + sai->dma_params_tx.maxburst = sai->audio_config[tx].words_per_fifo * pins; sai->dma_params_tx.peripheral_config = &sai->audio_config[tx]; sai->dma_params_tx.peripheral_size = sizeof(sai->audio_config[tx]); + + regmap_update_bits(sai->regmap, FSL_SAI_TCR1(ofs), + FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth), + sai->soc_data->fifo_depth - sai->dma_params_tx.maxburst); } else { sai->audio_config[tx].words_per_fifo = min(slots, channels); sai->audio_config[tx].src_fifo_num = pins; sai->audio_config[tx].src_fifo_off = dl_cfg[dl_cfg_idx].offset[tx]; - sai->dma_params_rx.maxburst = FSL_SAI_MAXBURST_RX * pins; + sai->dma_params_rx.maxburst = sai->audio_config[tx].words_per_fifo * pins; sai->dma_params_rx.peripheral_config = &sai->audio_config[tx]; sai->dma_params_rx.peripheral_size = sizeof(sai->audio_config[tx]); + + regmap_update_bits(sai->regmap, FSL_SAI_RCR1(ofs), + FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth), + sai->dma_params_rx.maxburst - 1); } }