Really stop the transfer when the DMA channel is being disabled.
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 23 Feb 2008 02:08:35 +0000 (02:08 +0000)
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 23 Feb 2008 02:08:35 +0000 (02:08 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3987 c046a42c-6fe2-441c-8c8c-71466251a162

hw/omap.c

index ee426dc..854198e 100644 (file)
--- a/hw/omap.c
+++ b/hw/omap.c
@@ -583,12 +583,13 @@ static void omap_dma_deactivate_channel(struct omap_dma_s *s,
     if (ch->pending_request && !ch->waiting_end_prog) {
         /* Don't deactivate the channel */
         ch->pending_request = 0;
-        return;
+        if (ch->enable)
+            return;
     }
 
     /* Don't deactive the channel if it is synchronized and the DMA request is
        active */
-    if (ch->sync && (s->drq & (1 << ch->sync)))
+    if (ch->sync && (s->drq & (1 << ch->sync)) && ch->enable)
         return;
 
     if (ch->active) {