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>
Esse commit está contido em:
@@ -87,7 +87,7 @@ static int snd_mxs_open(struct snd_pcm_substream *substream)
|
||||
|
||||
snd_soc_set_runtime_hwparams(substream, &snd_mxs_hardware);
|
||||
|
||||
return snd_dmaengine_pcm_open(substream, filter,
|
||||
return snd_dmaengine_pcm_open_request_chan(substream, filter,
|
||||
snd_soc_dai_get_dma_data(rtd->cpu_dai, substream));
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ static int snd_mxs_pcm_mmap(struct snd_pcm_substream *substream,
|
||||
|
||||
static struct snd_pcm_ops mxs_pcm_ops = {
|
||||
.open = snd_mxs_open,
|
||||
.close = snd_dmaengine_pcm_close,
|
||||
.close = snd_dmaengine_pcm_close_release_chan,
|
||||
.ioctl = snd_pcm_lib_ioctl,
|
||||
.hw_params = snd_mxs_pcm_hw_params,
|
||||
.trigger = snd_dmaengine_pcm_trigger,
|
||||
|
Referência em uma nova issue
Block a user