0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _IMX_PCM_H
0010 #define _IMX_PCM_H
0011
0012 #include <linux/dma/imx-dma.h>
0013
0014
0015
0016
0017 #define IMX_SSI_DMABUF_SIZE (64 * 1024)
0018
0019 #define IMX_DEFAULT_DMABUF_SIZE (64 * 1024)
0020
0021 static inline void
0022 imx_pcm_dma_params_init_data(struct imx_dma_data *dma_data,
0023 int dma, enum sdma_peripheral_type peripheral_type)
0024 {
0025 dma_data->dma_request = dma;
0026 dma_data->priority = DMA_PRIO_HIGH;
0027 dma_data->peripheral_type = peripheral_type;
0028 }
0029
0030 struct imx_pcm_fiq_params {
0031 int irq;
0032 void __iomem *base;
0033
0034
0035 struct snd_dmaengine_dai_dma_data *dma_params_rx;
0036 struct snd_dmaengine_dai_dma_data *dma_params_tx;
0037 };
0038
0039 #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA)
0040 int imx_pcm_dma_init(struct platform_device *pdev);
0041 #else
0042 static inline int imx_pcm_dma_init(struct platform_device *pdev)
0043 {
0044 return -ENODEV;
0045 }
0046 #endif
0047
0048 #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ)
0049 int imx_pcm_fiq_init(struct platform_device *pdev,
0050 struct imx_pcm_fiq_params *params);
0051 void imx_pcm_fiq_exit(struct platform_device *pdev);
0052 #else
0053 static inline int imx_pcm_fiq_init(struct platform_device *pdev,
0054 struct imx_pcm_fiq_params *params)
0055 {
0056 return -ENODEV;
0057 }
0058
0059 static inline void imx_pcm_fiq_exit(struct platform_device *pdev)
0060 {
0061 }
0062 #endif
0063
0064 #endif