diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-03-22 09:12:12 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-03-26 10:17:31 -0400 |
commit | 312bb4f626328fdc246c8d13082ab00e26e7d048 (patch) | |
tree | b0252427b7dcc44643f228980610cd13ccaca58a /sound/soc/fsl/imx-pcm.h | |
parent | ac581e60dfb4cc55ac20cca18202c7689d324aa7 (diff) |
ASoC: imx-pcm: Embed the imx_dma_data struct in the dma_params struct
Currently the imx_dma_data struct, which gets passed to the dmaengine driver, is
allocated and constructed in the pcm driver from the data stored in the
dma_params struct. The dma_params struct gets passed to the pcm driver from the
dai driver. Instead of going this route of indirection embed the dma_data struct
directly into the dma_params struct and let the dai driver fill it in. This
allows us to simplify the imx-pcm-dma driver quite a bit, since it doesn't have
care about memory managing the imx_dma_data struct anymore.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/fsl/imx-pcm.h')
-rw-r--r-- | sound/soc/fsl/imx-pcm.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sound/soc/fsl/imx-pcm.h b/sound/soc/fsl/imx-pcm.h index 5ae13a13a353..16eaf5a09f53 100644 --- a/sound/soc/fsl/imx-pcm.h +++ b/sound/soc/fsl/imx-pcm.h | |||
@@ -13,18 +13,31 @@ | |||
13 | #ifndef _IMX_PCM_H | 13 | #ifndef _IMX_PCM_H |
14 | #define _IMX_PCM_H | 14 | #define _IMX_PCM_H |
15 | 15 | ||
16 | #include <linux/platform_data/dma-imx.h> | ||
17 | |||
16 | /* | 18 | /* |
17 | * Do not change this as the FIQ handler depends on this size | 19 | * Do not change this as the FIQ handler depends on this size |
18 | */ | 20 | */ |
19 | #define IMX_SSI_DMABUF_SIZE (64 * 1024) | 21 | #define IMX_SSI_DMABUF_SIZE (64 * 1024) |
20 | 22 | ||
21 | struct imx_pcm_dma_params { | 23 | struct imx_pcm_dma_params { |
22 | int dma; | ||
23 | unsigned long dma_addr; | 24 | unsigned long dma_addr; |
24 | int burstsize; | 25 | int burstsize; |
25 | bool shared_peripheral; /* The peripheral is on SPBA bus */ | 26 | struct imx_dma_data dma_data; |
26 | }; | 27 | }; |
27 | 28 | ||
29 | static inline void | ||
30 | imx_pcm_dma_params_init_data(struct imx_pcm_dma_params *params, | ||
31 | int dma, bool shared) | ||
32 | { | ||
33 | params->dma_data.dma_request = dma; | ||
34 | params->dma_data.priority = DMA_PRIO_HIGH; | ||
35 | if (shared) | ||
36 | params->dma_data.peripheral_type = IMX_DMATYPE_SSI_SP; | ||
37 | else | ||
38 | params->dma_data.peripheral_type = IMX_DMATYPE_SSI; | ||
39 | } | ||
40 | |||
28 | int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, | 41 | int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, |
29 | struct vm_area_struct *vma); | 42 | struct vm_area_struct *vma); |
30 | int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); | 43 | int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); |