diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-04-15 13:19:48 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-04-17 09:17:54 -0400 |
commit | 7c1c1d4a7b4ca1266057a3632d27450f5575caf9 (patch) | |
tree | 39e53ebd108b551ba939fd13ca9e3c2f8f869400 /include/sound/dmaengine_pcm.h | |
parent | 69b6f19622ce0aef41df884b75e3f789c64b89c0 (diff) |
ASoC: dmaengine-pcm: Make requesting the DMA channel at PCM open optional
Refactor the dmaengine PCM library to allow the DMA channel to be requested
before opening a PCM substream. snd_dmaengine_pcm_open() now expects a DMA
channel instead of a filter function and filter parameter as its parameters.
snd_dmaengine_pcm_close() is updated to not release the DMA channel. This allows
a dmaengine based PCM driver to request its channels before the substream is
opened.
The patch also introduces two new functions, snd_dmaengine_pcm_open_request_chan()
and snd_dmaengine_pcm_close_release_chan(), which have the same signature and
behaviour of the old snd_dmaengine_pcm_{open,close}() and internally use the new
variants of these functions. All users of snd_dmaengine_pcm_{open,close}() are
updated to use snd_dmaengine_pcm_open_request_chan() and
snd_dmaengine_pcm_close_release_chan().
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound/dmaengine_pcm.h')
-rw-r--r-- | include/sound/dmaengine_pcm.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/include/sound/dmaengine_pcm.h b/include/sound/dmaengine_pcm.h index 95620428a59b..d015d67e75c3 100644 --- a/include/sound/dmaengine_pcm.h +++ b/include/sound/dmaengine_pcm.h | |||
@@ -39,9 +39,13 @@ snd_pcm_uframes_t snd_dmaengine_pcm_pointer(struct snd_pcm_substream *substream) | |||
39 | snd_pcm_uframes_t snd_dmaengine_pcm_pointer_no_residue(struct snd_pcm_substream *substream); | 39 | snd_pcm_uframes_t snd_dmaengine_pcm_pointer_no_residue(struct snd_pcm_substream *substream); |
40 | 40 | ||
41 | int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream, | 41 | int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream, |
42 | dma_filter_fn filter_fn, void *filter_data); | 42 | struct dma_chan *chan); |
43 | int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream); | 43 | int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream); |
44 | 44 | ||
45 | int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream, | ||
46 | dma_filter_fn filter_fn, void *filter_data); | ||
47 | int snd_dmaengine_pcm_close_release_chan(struct snd_pcm_substream *substream); | ||
48 | |||
45 | struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream); | 49 | struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream); |
46 | 50 | ||
47 | /** | 51 | /** |