aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>2008-02-23 02:08:35 +0000
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>2008-02-23 02:08:35 +0000
commitf65fb10982229b15702dc5f1e675cf30a14ca11a (patch)
tree98eaf84c9d2c5eb9a1eb70341edca8880dacdc3f /hw
parentb1314cf9d3119846526eabae6bbd7b8796d22958 (diff)
Really stop the transfer when the DMA channel is being disabled.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3987 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw')
-rw-r--r--hw/omap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/omap.c b/hw/omap.c
index ee426dc0d1..854198e090 100644
--- 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) {