qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH 10/17] magnum: disable floppy DMA for now


From: Hervé Poussineau
Subject: [Qemu-block] [PATCH 10/17] magnum: disable floppy DMA for now
Date: Tue, 29 Dec 2015 09:04:48 +0100

Floppy uses the DMA controller in rc4030 chipset, and not the i8259 from the 
ISA bus.
It's better to disable DMA than to call the wrong DMA controller.

Signed-off-by: Hervé Poussineau <address@hidden>
---
 hw/block/fdc.c         | 5 +++--
 hw/mips/mips_jazz.c    | 3 ++-
 include/hw/block/fdc.h | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 4292ece..cfdd625 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -2255,7 +2255,7 @@ ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds)
     return isadev;
 }
 
-void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
+void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, IsaDma *dma,
                         hwaddr mmio_base, DriveInfo **fds)
 {
     FDCtrl *fdctrl;
@@ -2266,7 +2266,8 @@ void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
     dev = qdev_create(NULL, "sysbus-fdc");
     sys = SYSBUS_FDC(dev);
     fdctrl = &sys->state;
-    fdctrl->dma_chann = dma_chann; /* FIXME */
+    fdctrl->dma = dma;
+    fdctrl->dma_chann = dma ? dma_chann : -1;
     if (fds[0]) {
         qdev_prop_set_drive_nofail(dev, "driveA", blk_by_legacy_dinfo(fds[0]));
     }
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 64a0de2..300c199 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -296,7 +296,8 @@ static void mips_jazz_init(MachineState *machine,
     for (n = 0; n < MAX_FD; n++) {
         fds[n] = drive_get(IF_FLOPPY, 0, n);
     }
-    fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0, 0x80003000, fds);
+    /* FIXME: we should enable DMA with a custom IsaDma device */
+    fdctrl_init_sysbus(qdev_get_gpio_in(rc4030, 1), 0, NULL, 0x80003000, fds);
 
     /* Real time clock */
     rtc_init(isa_bus, 1980, NULL);
diff --git a/include/hw/block/fdc.h b/include/hw/block/fdc.h
index d48b2f8..f92e44f 100644
--- a/include/hw/block/fdc.h
+++ b/include/hw/block/fdc.h
@@ -16,7 +16,7 @@ typedef enum FDriveType {
 #define TYPE_ISA_FDC "isa-fdc"
 
 ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds);
-void fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
+void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, IsaDma *dma,
                         hwaddr mmio_base, DriveInfo **fds);
 void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
                        DriveInfo **fds, qemu_irq *fdc_tc);
-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]