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]);
}
}
#define __FSL_SAI_H
#include <linux/pm_qos.h>
+#include <linux/platform_data/dma-imx.h>
#include <sound/dmaengine_pcm.h>
#define FSL_SAI_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
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;
};