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)
commit9ce2482fc6b22709df087d4a8387b67893176312
treed82c90bd406cb34293ce899cb691a8194170e2c3
parent5005e0b76781c37d0a16dd6dd17d015098e8ce92
ARM: OMAP2+: Fix DMA hang after off-idle

Commit 6ddeb6d84459 (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 6ddeb6d84459 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: 6ddeb6d84459 (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