aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/fsl/imx-pcm.h
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2013-03-22 09:12:12 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-03-26 10:17:31 -0400
commit312bb4f626328fdc246c8d13082ab00e26e7d048 (patch)
treeb0252427b7dcc44643f228980610cd13ccaca58a /sound/soc/fsl/imx-pcm.h
parentac581e60dfb4cc55ac20cca18202c7689d324aa7 (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.h17
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
21struct imx_pcm_dma_params { 23struct 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
29static inline void
30imx_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
28int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, 41int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
29 struct vm_area_struct *vma); 42 struct vm_area_struct *vma);
30int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); 43int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);