From 9afc15503583873658d582793b664ee76ecb9c96 Mon Sep 17 00:00:00 2001 From: Shengjiu Wang Date: Thu, 25 Mar 2021 10:47:53 +0800 Subject: [PATCH] LF-3724-1: ASoC: fsl_ssi: add sdma_audio_config support Add sdma_audio_config support especially for dual fifo Signed-off-by: Shengjiu Wang Reviewed-by: Robin Gong --- sound/soc/fsl/fsl_ssi.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index b47ffd9a7a5c..1f57a4b9b0d4 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -290,6 +291,7 @@ struct fsl_ssi { u32 dma_maxburst; struct mutex ac97_reg_lock; + struct sdma_audio_config audio_config[2]; }; /* @@ -863,15 +865,23 @@ static int fsl_ssi_hw_params(struct snd_pcm_substream *substream, if (ssi->use_dyna_fifo) { if (channels == 1) { - ssi->dma_params_tx.fifo_num = 1; - ssi->dma_params_rx.fifo_num = 1; + ssi->audio_config[0].dst_fifo_num = 1; + ssi->audio_config[1].src_fifo_num = 1; + ssi->dma_params_tx.peripheral_config = &ssi->audio_config[0]; + ssi->dma_params_tx.peripheral_size = sizeof(ssi->audio_config[0]); + ssi->dma_params_rx.peripheral_config = &ssi->audio_config[1]; + ssi->dma_params_rx.peripheral_size = sizeof(ssi->audio_config[1]); vals[RX].srcr &= ~SSI_SRCR_RFEN1; vals[TX].stcr &= ~SSI_STCR_TFEN1; vals[RX].scr &= ~SSI_SCR_TCH_EN; vals[TX].scr &= ~SSI_SCR_TCH_EN; } else { - ssi->dma_params_tx.fifo_num = 2; - ssi->dma_params_rx.fifo_num = 2; + ssi->audio_config[0].dst_fifo_num = 2; + ssi->audio_config[1].src_fifo_num = 2; + ssi->dma_params_tx.peripheral_config = &ssi->audio_config[0]; + ssi->dma_params_tx.peripheral_size = sizeof(ssi->audio_config[0]); + ssi->dma_params_rx.peripheral_config = &ssi->audio_config[1]; + ssi->dma_params_rx.peripheral_size = sizeof(ssi->audio_config[1]); vals[RX].srcr |= SSI_SRCR_RFEN1; vals[TX].stcr |= SSI_STCR_TFEN1; vals[RX].scr |= SSI_SCR_TCH_EN; -- 2.17.1