ASoC: omap-pcm: Fix the no period wakeup implementation
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 4 Oct 2011 08:09:52 +0000 (11:09 +0300)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 4 Oct 2011 11:03:50 +0000 (12:03 +0100)
After omap_request_dma the BLOCK_IRQ is enabled as default
configuration for the channel.
If we are requested for no period wakeup, we need to disable
the BLOCK_IRQ in order to not receive any interrupts.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/omap/omap-pcm.c

index 9b5c88ac35b985e7b373add9aa4ff6250f3203c1..5e37ec915de2a30e808583443a328a4220041fd3 100644 (file)
@@ -198,6 +198,14 @@ static int omap_pcm_prepare(struct snd_pcm_substream *substream)
                              OMAP_DMA_LAST_IRQ | OMAP_DMA_BLOCK_IRQ);
        else if (!substream->runtime->no_period_wakeup)
                omap_enable_dma_irq(prtd->dma_ch, OMAP_DMA_FRAME_IRQ);
+       else {
+               /*
+                * No period wakeup:
+                * we need to disable BLOCK_IRQ, which is enabled by the omap
+                * dma core at request dma time.
+                */
+               omap_disable_dma_irq(prtd->dma_ch, OMAP_DMA_BLOCK_IRQ);
+       }
 
        if (!(cpu_class_is_omap1())) {
                omap_set_dma_src_burst_mode(prtd->dma_ch,