diff options
-rw-r--r-- | sound/soc/soc-generic-dmaengine-pcm.c | 21 |
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 | /** |