diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2012-02-22 04:49:08 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-02 08:47:25 -0500 |
commit | e7f73a1613567ac82314f33956c0f3810bf1efb2 (patch) | |
tree | 720501188147171460a37efedd5592a28248fdc2 /include/sound | |
parent | 1355ab147fa38e4b3841469c51422e2343a877b2 (diff) |
ASoC: Add dmaengine PCM helper functions
This patch adds a set of functions which are intended to be used when
implementing a dmaengine based sound PCM driver.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Vinod Koul <vinod.koul@linux.intel.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/dmaengine_pcm.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/sound/dmaengine_pcm.h b/include/sound/dmaengine_pcm.h new file mode 100644 index 000000000000..a8fcaa6d531f --- /dev/null +++ b/include/sound/dmaengine_pcm.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2012, Analog Devices Inc. | ||
3 | * Author: Lars-Peter Clausen <lars@metafoo.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License as published by the | ||
7 | * Free Software Foundation; either version 2 of the License, or (at your | ||
8 | * option) any later version. | ||
9 | * | ||
10 | * You should have received a copy of the GNU General Public License along | ||
11 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
12 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
13 | * | ||
14 | */ | ||
15 | #ifndef __SOUND_DMAENGINE_PCM_H__ | ||
16 | #define __SOUND_DMAENGINE_PCM_H__ | ||
17 | |||
18 | #include <sound/pcm.h> | ||
19 | #include <linux/dmaengine.h> | ||
20 | |||
21 | /** | ||
22 | * snd_pcm_substream_to_dma_direction - Get dma_transfer_direction for a PCM | ||
23 | * substream | ||
24 | * @substream: PCM substream | ||
25 | */ | ||
26 | static inline enum dma_transfer_direction | ||
27 | snd_pcm_substream_to_dma_direction(const struct snd_pcm_substream *substream) | ||
28 | { | ||
29 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | ||
30 | return DMA_MEM_TO_DEV; | ||
31 | else | ||
32 | return DMA_DEV_TO_MEM; | ||
33 | } | ||
34 | |||
35 | void snd_dmaengine_pcm_set_data(struct snd_pcm_substream *substream, void *data); | ||
36 | void *snd_dmaengine_pcm_get_data(struct snd_pcm_substream *substream); | ||
37 | |||
38 | int snd_hwparams_to_dma_slave_config(const struct snd_pcm_substream *substream, | ||
39 | const struct snd_pcm_hw_params *params, struct dma_slave_config *slave_config); | ||
40 | int snd_dmaengine_pcm_trigger(struct snd_pcm_substream *substream, int cmd); | ||
41 | snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream); | ||
42 | |||
43 | int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream, | ||
44 | dma_filter_fn filter_fn, void *filter_data); | ||
45 | int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream); | ||
46 | |||
47 | struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream); | ||
48 | |||
49 | #endif | ||