From e85ad9182c962bb095beb435e98fde612a4ef88d Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Wed, 3 Jul 2013 17:29:44 -0500 Subject: [PATCH 11/13] sound: soc: soc-dmaengine-pcm: Add support for new DMAEngine request API Formerly these resources were coming HWMOD on OMAP-like SoCs. With the impending removal of HWMOD data, drivers are being converted to use the "of-dma" method of requesting DMA channels which from DT and can be obtained using the dma_request_slave_channel API. Add support to the soc-dmaengine-pcm helpers so that we can fetch and open channels using this method. Signed-off-by: Joel Fernandes --- sound/soc/soc-dmaengine-pcm.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sound/soc/soc-dmaengine-pcm.c b/sound/soc/soc-dmaengine-pcm.c index aa924d9..461fe4f 100644 --- a/sound/soc/soc-dmaengine-pcm.c +++ b/sound/soc/soc-dmaengine-pcm.c @@ -276,6 +276,16 @@ struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn, } EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_channel); +struct dma_chan *snd_dmaengine_pcm_request_slave_channel( + struct snd_pcm_substream *substream, char *name) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct device *dev = snd_soc_dai_get_drvdata(rtd->cpu_dai); + + return dma_request_slave_channel(dev, name); +} +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_request_slave_channel); + /** * snd_dmaengine_pcm_open - Open a dmaengine based PCM substream * @substream: PCM substream @@ -334,6 +344,18 @@ int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream, } EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan); +int snd_dmaengine_pcm_open_request_slave_chan(struct snd_pcm_substream *substream, char *name) +{ + if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { + return snd_dmaengine_pcm_open(substream, + snd_dmaengine_pcm_request_slave_channel(substream, "tx")); + } else { + return snd_dmaengine_pcm_open(substream, + snd_dmaengine_pcm_request_slave_channel(substream, "rx")); + } +} +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_slave_chan); + /** * snd_dmaengine_pcm_close - Close a dmaengine based PCM substream * @substream: PCM substream -- 1.8.2.1