• Tony Lindgren's avatar
    ARM: OMAP2+: Fix DMA hang after off-idle · 9ce2482f
    Tony Lindgren authored
    Commit 6ddeb6d8 (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 6ddeb6d8 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: 6ddeb6d8 (dmaengine: omap-dma: move IRQ handling to omap-dma)
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    9ce2482f
dma.c 51.6 KB