xref: /openbmc/linux/sound/soc/fsl/imx-pcm.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
11c05c1edSAndra Danciu /* SPDX-License-Identifier: GPL-2.0+ */
2a23dc694SShawn Guo /*
3a23dc694SShawn Guo  * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
4a23dc694SShawn Guo  *
5a23dc694SShawn Guo  * This code is based on code copyrighted by Freescale,
6a23dc694SShawn Guo  * Liam Girdwood, Javier Martin and probably others.
7a23dc694SShawn Guo  */
8a23dc694SShawn Guo 
9a23dc694SShawn Guo #ifndef _IMX_PCM_H
10a23dc694SShawn Guo #define _IMX_PCM_H
11a23dc694SShawn Guo 
12*c6547c2eSSascha Hauer #include <linux/dma/imx-dma.h>
13312bb4f6SLars-Peter Clausen 
14a23dc694SShawn Guo /*
15a23dc694SShawn Guo  * Do not change this as the FIQ handler depends on this size
16a23dc694SShawn Guo  */
17a23dc694SShawn Guo #define IMX_SSI_DMABUF_SIZE	(64 * 1024)
18a23dc694SShawn Guo 
190d69e0ddSShengjiu Wang #define IMX_DEFAULT_DMABUF_SIZE	(64 * 1024)
200d69e0ddSShengjiu Wang 
219051cba1SMarkus Pargmann struct imx_pcm_fiq_params {
229051cba1SMarkus Pargmann 	int irq;
239051cba1SMarkus Pargmann 	void __iomem *base;
249051cba1SMarkus Pargmann 
259051cba1SMarkus Pargmann 	/* Pointer to original ssi driver to setup tx rx sizes */
269051cba1SMarkus Pargmann 	struct snd_dmaengine_dai_dma_data *dma_params_rx;
279051cba1SMarkus Pargmann 	struct snd_dmaengine_dai_dma_data *dma_params_tx;
289051cba1SMarkus Pargmann };
299051cba1SMarkus Pargmann 
303f1a91aaSFabio Estevam #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA)
319b3ff637SSascha Hauer int imx_pcm_dma_init(struct platform_device *pdev);
321927661bSShawn Guo #else
imx_pcm_dma_init(struct platform_device * pdev)339b3ff637SSascha Hauer static inline int imx_pcm_dma_init(struct platform_device *pdev)
341927661bSShawn Guo {
351927661bSShawn Guo 	return -ENODEV;
361927661bSShawn Guo }
371927661bSShawn Guo #endif
381927661bSShawn Guo 
393f1a91aaSFabio Estevam #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ)
409051cba1SMarkus Pargmann int imx_pcm_fiq_init(struct platform_device *pdev,
419051cba1SMarkus Pargmann 		struct imx_pcm_fiq_params *params);
4288e89f55SShawn Guo void imx_pcm_fiq_exit(struct platform_device *pdev);
431927661bSShawn Guo #else
imx_pcm_fiq_init(struct platform_device * pdev,struct imx_pcm_fiq_params * params)449051cba1SMarkus Pargmann static inline int imx_pcm_fiq_init(struct platform_device *pdev,
459051cba1SMarkus Pargmann 		struct imx_pcm_fiq_params *params)
461927661bSShawn Guo {
471927661bSShawn Guo 	return -ENODEV;
481927661bSShawn Guo }
4988e89f55SShawn Guo 
imx_pcm_fiq_exit(struct platform_device * pdev)5088e89f55SShawn Guo static inline void imx_pcm_fiq_exit(struct platform_device *pdev)
5188e89f55SShawn Guo {
5288e89f55SShawn Guo }
531927661bSShawn Guo #endif
541927661bSShawn Guo 
55a23dc694SShawn Guo #endif /* _IMX_PCM_H */
56