Message ID | 1347624358-25582-4-git-send-email-peter.ujfalusi@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 2012-09-14 at 15:05 +0300, Peter Ujfalusi wrote: > With this parameter added to dmaengine_prep_dma_cyclic() the API will > be in > sync with other dmaengine_prep_*() functions. > The dmaengine_prep_dma_cyclic() function primarily used by audio for > cyclic > transfer required by ALSA, we use the from audio to ask dma drivers to > suppress interrupts (if DMA_PREP_INTERRUPT is cleared) when it is > supported > on the platform. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > CC: Lars-Peter Clausen <lars@metafoo.de> > --- Acked-by: Vinod Koul <vinod.koul@linux.intel.com>
On Fri, Sep 14, 2012 at 03:05:46PM +0300, Peter Ujfalusi wrote: > With this parameter added to dmaengine_prep_dma_cyclic() the API will be in > sync with other dmaengine_prep_*() functions. > The dmaengine_prep_dma_cyclic() function primarily used by audio for cyclic > transfer required by ALSA, we use the from audio to ask dma drivers to > suppress interrupts (if DMA_PREP_INTERRUPT is cleared) when it is supported > on the platform. Are you sure this was generated against for-3.7? There's fuzz against dmaengine.h and git can't find the blobs to do resolution. Anyway, I applied this and the rest of the series. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 9c02a45..2abcac5 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -653,7 +653,8 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_rio_sg( static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_cyclic( struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, - size_t period_len, enum dma_transfer_direction dir) + size_t period_len, enum dma_transfer_direction dir, + unsigned long flags) { return chan->device->device_prep_dma_cyclic(chan, buf_addr, buf_len, period_len, dir, NULL); diff --git a/sound/soc/soc-dmaengine-pcm.c b/sound/soc/soc-dmaengine-pcm.c index 5df529e..bbc1257 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) struct dma_chan *chan = prtd->dma_chan; struct dma_async_tx_descriptor *desc; enum dma_transfer_direction direction; + unsigned long flags = DMA_CTRL_ACK; direction = snd_pcm_substream_to_dma_direction(substream); + if (!substream->runtime->no_period_wakeup) + flags |= DMA_PREP_INTERRUPT; + prtd->pos = 0; desc = dmaengine_prep_dma_cyclic(chan, substream->runtime->dma_addr, snd_pcm_lib_buffer_bytes(substream), - snd_pcm_lib_period_bytes(substream), direction); + snd_pcm_lib_period_bytes(substream), direction, flags); if (!desc) return -ENOMEM;
With this parameter added to dmaengine_prep_dma_cyclic() the API will be in sync with other dmaengine_prep_*() functions. The dmaengine_prep_dma_cyclic() function primarily used by audio for cyclic transfer required by ALSA, we use the from audio to ask dma drivers to suppress interrupts (if DMA_PREP_INTERRUPT is cleared) when it is supported on the platform. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> CC: Lars-Peter Clausen <lars@metafoo.de> --- include/linux/dmaengine.h | 3 ++- sound/soc/soc-dmaengine-pcm.c | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-)