Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ */
0002 /*
0003  * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
0004  *
0005  * This code is based on code copyrighted by Freescale,
0006  * Liam Girdwood, Javier Martin and probably others.
0007  */
0008 
0009 #ifndef _IMX_PCM_H
0010 #define _IMX_PCM_H
0011 
0012 #include <linux/dma/imx-dma.h>
0013 
0014 /*
0015  * Do not change this as the FIQ handler depends on this size
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     /* Pointer to original ssi driver to setup tx rx sizes */
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 /* _IMX_PCM_H */