]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: OMAP2+: Fix DMA hang after off-idle
authorTony Lindgren <tony@atomide.com>
Fri, 16 May 2014 21:05:35 +0000 (14:05 -0700)
committerTony Lindgren <tony@atomide.com>
Fri, 16 May 2014 22:04:31 +0000 (15:04 -0700)
commit60cd891fd01d235a4ca4d1712c26b77093e02999
treed82c90bd406cb34293ce899cb691a8194170e2c3
parent44dea8a86d59fe5fc270b8b3eab7b2d7cf17977e
ARM: OMAP2+: Fix DMA hang after off-idle

Commit e6489e1a2de2 (dmaengine: omap-dma: move IRQ handling to omap-dma)
added support for handling interrupts in the omap dmaengine driver
instead of the legacy driver. Because of different handling for
interrupts this however caused omap3 to hang eventually after hitting
off-idle.

Any of the virtual 32 DMA channels can be assigned to any of the
four DMA interrupts. So commit e6489e1a2de2 made the omap dmaengine
driver to use the second DMA interrupt while keeping the legacy code
still using the first DMA interrupt.

This means we need to save and restore both IRQENABLE_L1 in addition
to IRQENABLE_L0. As there is a chance that the DSP might be using
IRQENABLE_L2 or IRQENABLE_L3 lines, let's not touch those until
this has been confirmed. Let's just add a comment to the code for
now.

Fixes: e6489e1a2de2 (dmaengine: omap-dma: move IRQ handling to omap-dma)
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/plat-omap/dma.c