diff options
Diffstat (limited to 'sound/soc/soc-dmaengine-pcm.c')
-rw-r--r-- | sound/soc/soc-dmaengine-pcm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/soc/soc-dmaengine-pcm.c b/sound/soc/soc-dmaengine-pcm.c index 5df529eda251..bbc125748a38 100644 --- a/sound/soc/soc-dmaengine-pcm.c +++ b/sound/soc/soc-dmaengine-pcm.c | |||
@@ -140,14 +140,18 @@ static int dmaengine_pcm_prepare_and_submit(struct snd_pcm_substream *substream) | |||
140 | struct dma_chan *chan = prtd->dma_chan; | 140 | struct dma_chan *chan = prtd->dma_chan; |
141 | struct dma_async_tx_descriptor *desc; | 141 | struct dma_async_tx_descriptor *desc; |
142 | enum dma_transfer_direction direction; | 142 | enum dma_transfer_direction direction; |
143 | unsigned long flags = DMA_CTRL_ACK; | ||
143 | 144 | ||
144 | direction = snd_pcm_substream_to_dma_direction(substream); | 145 | direction = snd_pcm_substream_to_dma_direction(substream); |
145 | 146 | ||
147 | if (!substream->runtime->no_period_wakeup) | ||
148 | flags |= DMA_PREP_INTERRUPT; | ||
149 | |||
146 | prtd->pos = 0; | 150 | prtd->pos = 0; |
147 | desc = dmaengine_prep_dma_cyclic(chan, | 151 | desc = dmaengine_prep_dma_cyclic(chan, |
148 | substream->runtime->dma_addr, | 152 | substream->runtime->dma_addr, |
149 | snd_pcm_lib_buffer_bytes(substream), | 153 | snd_pcm_lib_buffer_bytes(substream), |
150 | snd_pcm_lib_period_bytes(substream), direction); | 154 | snd_pcm_lib_period_bytes(substream), direction, flags); |
151 | 155 | ||
152 | if (!desc) | 156 | if (!desc) |
153 | return -ENOMEM; | 157 | return -ENOMEM; |