aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2013-12-03 16:26:32 -0500
committerMark Brown <broonie@linaro.org>2013-12-09 13:42:27 -0500
commit11b3a7add2841aa698aa0a32396b6db413c22eda (patch)
treeae84542e406d20f97bdc84e8a4ed31478c5fe0f3
parenta22f33b00346f26d29483cdacdbf26df7947ef23 (diff)
ASoC: restructure dmaengine_pcm_request_chan_of()
Restructure the internals of dmaengine_pcm_request_chan_of() as a loop over all channels to be allocated. This makes it easier to add logic that applies to all allocated channels, without having to duplicate that logic in each of the half-duplex/full-duplex paths. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--sound/soc/soc-generic-dmaengine-pcm.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
index 87e86357124e..fbc28a799e06 100644
--- a/sound/soc/soc-generic-dmaengine-pcm.c
+++ b/sound/soc/soc-generic-dmaengine-pcm.c
@@ -291,21 +291,26 @@ static void dmaengine_pcm_request_chan_of(struct dmaengine_pcm *pcm,
291 struct device *dev) 291 struct device *dev)
292{ 292{
293 unsigned int i; 293 unsigned int i;
294 const char *name;
294 295
295 if ((pcm->flags & (SND_DMAENGINE_PCM_FLAG_NO_DT | 296 if ((pcm->flags & (SND_DMAENGINE_PCM_FLAG_NO_DT |
296 SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME)) || 297 SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME)) ||
297 !dev->of_node) 298 !dev->of_node)
298 return; 299 return;
299 300
300 if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX) { 301 for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE;
301 pcm->chan[0] = dma_request_slave_channel(dev, "rx-tx"); 302 i++) {
302 pcm->chan[1] = pcm->chan[0]; 303 if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
303 } else { 304 name = "rx-tx";
304 for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE; i++) { 305 else
305 pcm->chan[i] = dma_request_slave_channel(dev, 306 name = dmaengine_pcm_dma_channel_names[i];
306 dmaengine_pcm_dma_channel_names[i]); 307 pcm->chan[i] = dma_request_slave_channel(dev, name);
307 } 308 if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
309 break;
308 } 310 }
311
312 if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
313 pcm->chan[1] = pcm->chan[0];
309} 314}
310 315
311/** 316/**