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 Hauerstatic 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 Pargmannstatic 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 Guostatic 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