From: Shengjiu Wang Date: Thu, 25 Mar 2021 02:45:38 +0000 (+0800) Subject: LF-3724-2: ASoC: fsl_sai: add sdma_audio_config support X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~249 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=832e20ce06cb3596c6d07c83505693659d602acc;p=linux.git LF-3724-2: ASoC: fsl_sai: add sdma_audio_config support Add sdma_audio_config support especially for multi fifo. 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 37536e56f0b7..7dc6a1acec64 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -643,15 +643,19 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream, if (sai->is_multi_lane) { if (tx) { - sai->dma_params_tx.maxburst = - FSL_SAI_MAXBURST_TX * pins; - sai->dma_params_tx.fifo_num = pins + - (dl_cfg[dl_cfg_idx].offset[tx] << 4); + sai->audio_config[tx].words_per_fifo = slots; + 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.peripheral_config = &sai->audio_config[tx]; + sai->dma_params_tx.peripheral_size = sizeof(sai->audio_config[tx]); } else { - sai->dma_params_rx.maxburst = - FSL_SAI_MAXBURST_RX * pins; - sai->dma_params_rx.fifo_num = pins + - (dl_cfg[dl_cfg_idx].offset[tx] << 4); + sai->audio_config[tx].words_per_fifo = slots; + 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.peripheral_config = &sai->audio_config[tx]; + sai->dma_params_rx.peripheral_size = sizeof(sai->audio_config[tx]); } } diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h index fe6b06c1270c..d3d43ff5ea43 100644 --- a/sound/soc/fsl/fsl_sai.h +++ b/sound/soc/fsl/fsl_sai.h @@ -7,6 +7,7 @@ #define __FSL_SAI_H #include +#include #include #define FSL_SAI_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ @@ -303,6 +304,7 @@ struct fsl_sai { struct fsl_sai_verid verid; struct fsl_sai_param param; struct pm_qos_request pm_qos_req; + struct sdma_audio_config audio_config[2]; struct pinctrl *pinctrl; struct pinctrl_state *pins_state; };