Commit | Line | Data |
---|---|---|
4762fbab SG |
1 | /* |
2 | * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de> | |
3 | * | |
4 | * This code is based on code copyrighted by Freescale, | |
5 | * Liam Girdwood, Javier Martin and probably others. | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify it | |
8 | * under the terms of the GNU General Public License as published by the | |
9 | * Free Software Foundation; either version 2 of the License, or (at your | |
10 | * option) any later version. | |
11 | */ | |
12 | ||
13 | #ifndef _IMX_PCM_H | |
14 | #define _IMX_PCM_H | |
15 | ||
312bb4f6 LPC |
16 | #include <linux/platform_data/dma-imx.h> |
17 | ||
4762fbab SG |
18 | /* |
19 | * Do not change this as the FIQ handler depends on this size | |
20 | */ | |
21 | #define IMX_SSI_DMABUF_SIZE (64 * 1024) | |
22 | ||
0d69e0dd SW |
23 | #define IMX_DEFAULT_DMABUF_SIZE (64 * 1024) |
24 | #define IMX_SAI_DMABUF_SIZE (64 * 1024) | |
25 | #define IMX_SPDIF_DMABUF_SIZE (64 * 1024) | |
26 | #define IMX_ESAI_DMABUF_SIZE (256 * 1024) | |
27 | ||
312bb4f6 | 28 | static inline void |
a8909c9b | 29 | imx_pcm_dma_params_init_data(struct imx_dma_data *dma_data, |
32bd8cd2 | 30 | int dma, enum sdma_peripheral_type peripheral_type) |
312bb4f6 | 31 | { |
a8909c9b LPC |
32 | dma_data->dma_request = dma; |
33 | dma_data->priority = DMA_PRIO_HIGH; | |
32bd8cd2 | 34 | dma_data->peripheral_type = peripheral_type; |
312bb4f6 LPC |
35 | } |
36 | ||
9051cba1 MP |
37 | struct imx_pcm_fiq_params { |
38 | int irq; | |
39 | void __iomem *base; | |
40 | ||
41 | /* Pointer to original ssi driver to setup tx rx sizes */ | |
42 | struct snd_dmaengine_dai_dma_data *dma_params_rx; | |
43 | struct snd_dmaengine_dai_dma_data *dma_params_tx; | |
44 | }; | |
45 | ||
3f1a91aa | 46 | #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_DMA) |
0d69e0dd | 47 | int imx_pcm_dma_init(struct platform_device *pdev, size_t size); |
1927661b | 48 | #else |
0d69e0dd | 49 | static inline int imx_pcm_dma_init(struct platform_device *pdev, size_t size) |
1927661b SG |
50 | { |
51 | return -ENODEV; | |
52 | } | |
53 | #endif | |
54 | ||
3f1a91aa | 55 | #if IS_ENABLED(CONFIG_SND_SOC_IMX_PCM_FIQ) |
9051cba1 MP |
56 | int imx_pcm_fiq_init(struct platform_device *pdev, |
57 | struct imx_pcm_fiq_params *params); | |
88e89f55 | 58 | void imx_pcm_fiq_exit(struct platform_device *pdev); |
1927661b | 59 | #else |
9051cba1 MP |
60 | static inline int imx_pcm_fiq_init(struct platform_device *pdev, |
61 | struct imx_pcm_fiq_params *params) | |
1927661b SG |
62 | { |
63 | return -ENODEV; | |
64 | } | |
88e89f55 SG |
65 | |
66 | static inline void imx_pcm_fiq_exit(struct platform_device *pdev) | |
67 | { | |
68 | } | |
1927661b SG |
69 | #endif |
70 | ||
4762fbab | 71 | #endif /* _IMX_PCM_H */ |