diff options
Diffstat (limited to 'hw/sd')
-rw-r--r-- | hw/sd/sdhci.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index b93ecefd20..2f8b74a84f 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -837,7 +837,10 @@ static void sdhci_do_adma(SDHCIState *s) s->norintsts |= SDHC_NIS_DMA; } - sdhci_update_irq(s); + if (sdhci_update_irq(s) && !(dscr.attr & SDHC_ADMA_ATTR_END)) { + /* IRQ delivered, reschedule current transfer */ + break; + } } /* ADMA transfer terminates if blkcnt == 0 or by END attribute */ |