2019-04-05 14:49:51 +03:00
/* SPDX-License-Identifier: GPL-2.0+ */
2012-03-05 22:30:55 +08:00
/*
* Copyright 2009 Sascha Hauer < s . hauer @ pengutronix . de >
*
* This code is based on code copyrighted by Freescale ,
* Liam Girdwood , Javier Martin and probably others .
*/
# ifndef _IMX_PCM_H
# define _IMX_PCM_H
2013-03-22 14:12:12 +01:00
# include <linux/platform_data/dma-imx.h>
2012-03-05 22:30:55 +08:00
/*
* Do not change this as the FIQ handler depends on this size
*/
# define IMX_SSI_DMABUF_SIZE (64 * 1024)
2015-06-23 18:23:53 +08:00
# define IMX_DEFAULT_DMABUF_SIZE (64 * 1024)
# define IMX_SAI_DMABUF_SIZE (64 * 1024)
# define IMX_SPDIF_DMABUF_SIZE (64 * 1024)
# define IMX_ESAI_DMABUF_SIZE (256 * 1024)
2013-03-22 14:12:12 +01:00
static inline void
2013-04-03 11:06:04 +02:00
imx_pcm_dma_params_init_data ( struct imx_dma_data * dma_data ,
2013-07-25 17:41:41 +08:00
int dma , enum sdma_peripheral_type peripheral_type )
2013-03-22 14:12:12 +01:00
{
2013-04-03 11:06:04 +02:00
dma_data - > dma_request = dma ;
dma_data - > priority = DMA_PRIO_HIGH ;
2013-07-25 17:41:41 +08:00
dma_data - > peripheral_type = peripheral_type ;
2013-03-22 14:12:12 +01:00
}
2013-06-20 15:20:21 +02:00
struct imx_pcm_fiq_params {
int irq ;
void __iomem * base ;
/* Pointer to original ssi driver to setup tx rx sizes */
struct snd_dmaengine_dai_dma_data * dma_params_rx ;
struct snd_dmaengine_dai_dma_data * dma_params_tx ;
} ;
2013-07-29 18:37:32 -03:00
# if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA)
2015-06-23 18:23:53 +08:00
int imx_pcm_dma_init ( struct platform_device * pdev , size_t size ) ;
2013-01-28 14:25:43 +08:00
# else
2015-06-23 18:23:53 +08:00
static inline int imx_pcm_dma_init ( struct platform_device * pdev , size_t size )
2013-01-28 14:25:43 +08:00
{
return - ENODEV ;
}
# endif
2013-07-29 18:37:32 -03:00
# if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ)
2013-06-20 15:20:21 +02:00
int imx_pcm_fiq_init ( struct platform_device * pdev ,
struct imx_pcm_fiq_params * params ) ;
2013-04-25 11:18:48 +08:00
void imx_pcm_fiq_exit ( struct platform_device * pdev ) ;
2013-01-28 14:25:43 +08:00
# else
2013-06-20 15:20:21 +02:00
static inline int imx_pcm_fiq_init ( struct platform_device * pdev ,
struct imx_pcm_fiq_params * params )
2013-01-28 14:25:43 +08:00
{
return - ENODEV ;
}
2013-04-25 11:18:48 +08:00
static inline void imx_pcm_fiq_exit ( struct platform_device * pdev )
{
}
2013-01-28 14:25:43 +08:00
# endif
2012-03-05 22:30:55 +08:00
# endif /* _IMX_PCM_H */