summaryrefslogtreecommitdiffstats
path: root/sound/soc/fsl/imx-pcm.h
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2013-03-22 14:12:12 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-03-26 14:17:31 +0000
commit312bb4f626328fdc246c8d13082ab00e26e7d048 (patch)
treeb0252427b7dcc44643f228980610cd13ccaca58a /sound/soc/fsl/imx-pcm.h
parentac581e60dfb4cc55ac20cca18202c7689d324aa7 (diff)
downloadlinux-312bb4f626328fdc246c8d13082ab00e26e7d048.tar.bz2
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 @@
#ifndef _IMX_PCM_H
#define _IMX_PCM_H
+#include <linux/platform_data/dma-imx.h>
+
/*
* Do not change this as the FIQ handler depends on this size
*/
#define IMX_SSI_DMABUF_SIZE (64 * 1024)
struct imx_pcm_dma_params {
- int dma;
unsigned long dma_addr;
int burstsize;
- bool shared_peripheral; /* The peripheral is on SPBA bus */
+ struct imx_dma_data dma_data;
};
+static inline void
+imx_pcm_dma_params_init_data(struct imx_pcm_dma_params *params,
+ int dma, bool shared)
+{
+ params->dma_data.dma_request = dma;
+ params->dma_data.priority = DMA_PRIO_HIGH;
+ if (shared)
+ params->dma_data.peripheral_type = IMX_DMATYPE_SSI_SP;
+ else
+ params->dma_data.peripheral_type = IMX_DMATYPE_SSI;
+}
+
int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
struct vm_area_struct *vma);
int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);