aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-03-10 17:30:29 +0100
committerAurelien Jarno <aurelien@aurel32.net>2010-03-13 12:16:06 +0100
commit30d061750d965f37e77ee5678e5b9b2e57bacb73 (patch)
tree3c6155177c3cddb478d583182181c5884561b922 /hw
parentc5f5dc5bad4cec580f10b31fcafd1dd5bd93c88f (diff)
fdc: fix drive property handling.
Fix the floppy controller init wrappers to set the drive properties only in case the DriveInfo pointers passed in are non NULL. This allows to set the properties using -global. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> (cherry picked from commit 995bf0ca57e52f4991d7f90c7eb2bbf7bc3f3c44)
Diffstat (limited to 'hw')
-rw-r--r--hw/fdc.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/hw/fdc.c b/hw/fdc.c
index 0579b03728..b291365527 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -1860,8 +1860,12 @@ fdctrl_t *fdctrl_init_isa(DriveInfo **fds)
ISADevice *dev;
dev = isa_create("isa-fdc");
- qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
- qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
+ if (fds[0]) {
+ qdev_prop_set_drive(&dev->qdev, "driveA", fds[0]);
+ }
+ if (fds[1]) {
+ qdev_prop_set_drive(&dev->qdev, "driveB", fds[1]);
+ }
if (qdev_init(&dev->qdev) < 0)
return NULL;
return &(DO_UPCAST(fdctrl_isabus_t, busdev, dev)->state);
@@ -1879,8 +1883,12 @@ fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
sys = DO_UPCAST(fdctrl_sysbus_t, busdev.qdev, dev);
fdctrl = &sys->state;
fdctrl->dma_chann = dma_chann; /* FIXME */
- qdev_prop_set_drive(dev, "driveA", fds[0]);
- qdev_prop_set_drive(dev, "driveB", fds[1]);
+ if (fds[0]) {
+ qdev_prop_set_drive(dev, "driveA", fds[0]);
+ }
+ if (fds[1]) {
+ qdev_prop_set_drive(dev, "driveB", fds[1]);
+ }
qdev_init_nofail(dev);
sysbus_connect_irq(&sys->busdev, 0, irq);
sysbus_mmio_map(&sys->busdev, 0, mmio_base);
@@ -1896,7 +1904,9 @@ fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base,
fdctrl_t *fdctrl;
dev = qdev_create(NULL, "SUNW,fdtwo");
- qdev_prop_set_drive(dev, "drive", fds[0]);
+ if (fds[0]) {
+ qdev_prop_set_drive(dev, "drive", fds[0]);
+ }
qdev_init_nofail(dev);
sys = DO_UPCAST(fdctrl_sysbus_t, busdev.qdev, dev);
fdctrl = &sys->state;