2012-03-05 18:30:55 +04: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 .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*/
# ifndef _IMX_PCM_H
# define _IMX_PCM_H
2013-03-22 17:12:12 +04:00
# include <linux/platform_data/dma-imx.h>
2012-03-05 18:30:55 +04:00
/*
* Do not change this as the FIQ handler depends on this size
*/
# define IMX_SSI_DMABUF_SIZE (64 * 1024)
2015-06-23 13:23:53 +03: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 17:12:12 +04:00
static inline void
2013-04-03 13:06:04 +04:00
imx_pcm_dma_params_init_data ( struct imx_dma_data * dma_data ,
2013-07-25 13:41:41 +04:00
int dma , enum sdma_peripheral_type peripheral_type )
2013-03-22 17:12:12 +04:00
{
2013-04-03 13:06:04 +04:00
dma_data - > dma_request = dma ;
dma_data - > priority = DMA_PRIO_HIGH ;
2013-07-25 13:41:41 +04:00
dma_data - > peripheral_type = peripheral_type ;
2013-03-22 17:12:12 +04:00
}
2013-06-20 17:20:21 +04: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-30 01:37:32 +04:00
# if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA)
2015-06-23 13:23:53 +03:00
int imx_pcm_dma_init ( struct platform_device * pdev , size_t size ) ;
2013-01-28 10:25:43 +04:00
# else
2015-06-23 13:23:53 +03:00
static inline int imx_pcm_dma_init ( struct platform_device * pdev , size_t size )
2013-01-28 10:25:43 +04:00
{
return - ENODEV ;
}
# endif
2013-07-30 01:37:32 +04:00
# if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ)
2013-06-20 17:20:21 +04:00
int imx_pcm_fiq_init ( struct platform_device * pdev ,
struct imx_pcm_fiq_params * params ) ;
2013-04-25 07:18:48 +04:00
void imx_pcm_fiq_exit ( struct platform_device * pdev ) ;
2013-01-28 10:25:43 +04:00
# else
2013-06-20 17:20:21 +04:00
static inline int imx_pcm_fiq_init ( struct platform_device * pdev ,
struct imx_pcm_fiq_params * params )
2013-01-28 10:25:43 +04:00
{
return - ENODEV ;
}
2013-04-25 07:18:48 +04:00
static inline void imx_pcm_fiq_exit ( struct platform_device * pdev )
{
}
2013-01-28 10:25:43 +04:00
# endif
2012-03-05 18:30:55 +04:00
# endif /* _IMX_PCM_H */