diff --git a/hw/pxa2xx_dma.c b/hw/pxa2xx_dma.c index 4c60ffd..7067a78 100644 --- a/hw/pxa2xx_dma.c +++ b/hw/pxa2xx_dma.c @@ -342,7 +343,7 @@ static void pxa2xx_dma_write(void *opaque, DCSR_STARTINTR | DCSR_BUSERRINTR)); s->chan[channel].state |= value & 0xfc800000; - if (s->chan[channel].state & DCSR_STOPIRQEN) + if (s->chan[channel].state & (DCSR_STOPIRQEN | DCSR_RUN)) s->chan[channel].state &= ~DCSR_STOPINTR; if (value & DCSR_NODESCFETCH) { @@ -352,7 +353,6 @@ static void pxa2xx_dma_write(void *opaque, } else { /* Descriptor-fetch mode */ if (value & DCSR_RUN) { - s->chan[channel].state &= ~DCSR_STOPINTR; pxa2xx_dma_descriptor_fetch(s, channel); pxa2xx_dma_run(s); }