msm: dma: add proper handling of spurious interrupts

Previously, the irq handler assumes that the clock for the datamover is
on, and that the interrupt is enabled, and so it turns them off and
disables the irq if the channel is not active once it is finished. This
is incorrect in the case of a spurious interrupt, where we can end up
disabling a clock that was never enabled, and can disable the irq twice,
preventing it from ever coming in. Fix this by only doing these things
if we got a valid transfer result, which won't be the case if the irq is
spurious.

Signed-off-by: Jeff Ohlstein <johlstei@codeaurora.org>
1 file changed