[alsa-devel] [PATCH] ASoC: omap-pcm: Fix the no period wakeup implementation
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 --- sound/soc/omap/omap-pcm.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index 9b5c88a..5e37ec9 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c @@ -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,
On 10/04/2011 11:09 AM, Peter Ujfalusi wrote:
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 Ujfalusipeter.ujfalusi@ti.com
sound/soc/omap/omap-pcm.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index 9b5c88a..5e37ec9 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c @@ -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);
- }
Acked-by: Jarkko Nikula jarkko.nikula@bitmer.com
while it would be more clear to fix this in omap dma core.
On Tuesday 04 October 2011 11:34:28 Jarkko Nikula wrote:
Acked-by: Jarkko Nikula jarkko.nikula@bitmer.com
while it would be more clear to fix this in omap dma core.
I have thought about that.. however, the only configuration, where we do not need the BLOCK_IRQ is in audio, and only when we are running in 'no period wakeup' mode. In all other cases we need to have the BLOCK_IRQ enabled. I have looked at the other OMAP drivers, which uses the DMA and all assumes, that the BLOCK_IRQ is enabled out of box.
We can modify all OMAP drivers, and the dma core, or we can just disable the BLOCK_IRQ at the only case, when it is not needed.
-- Péter
On Tue, Oct 04, 2011 at 11:09:52AM +0300, Peter Ujfalusi wrote:
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.
Applied, thanks.
participants (3)
-
Jarkko Nikula
-
Mark Brown
-
Peter Ujfalusi