From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54774) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YcHQb-0005De-HD for qemu-devel@nongnu.org; Sun, 29 Mar 2015 13:55:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YcHQa-0004ge-GW for qemu-devel@nongnu.org; Sun, 29 Mar 2015 13:55:17 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sun, 29 Mar 2015 19:53:21 +0200 Message-Id: <1427651603-9210-7-git-send-email-afaerber@suse.de> In-Reply-To: <1427651603-9210-1-git-send-email-afaerber@suse.de> References: <1427651603-9210-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH RFC for-2.3? 6/8] pc87312: Create FDC in-place List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mark.cave-ayland@ilande.co.uk, armbru@redhat.com, Alexander Graf , =?UTF-8?q?Andreas=20F=C3=A4rber?= , hpoussin@reactos.org, qemu-ppc@nongnu.org, jsnow@redhat.com, =?UTF-8?q?Andreas=20F=C3=A4rber?= Move drive_get() code to PReP machine. Signed-off-by: Andreas F=C3=A4rber --- hw/isa/pc87312.c | 32 ++++++++++++++++---------------- hw/ppc/prep.c | 11 +++++++++++ include/hw/isa/pc87312.h | 6 ++---- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c index 207eaa8..d35eb0e 100644 --- a/hw/isa/pc87312.c +++ b/hw/isa/pc87312.c @@ -266,7 +266,6 @@ static void pc87312_realize(DeviceState *dev, Error *= *errp) DeviceState *d; ISADevice *isa; ISABus *bus; - DriveInfo *drive; Error *local_err =3D NULL; int i; =20 @@ -311,23 +310,17 @@ static void pc87312_realize(DeviceState *dev, Error= **errp) } =20 if (is_fdc_enabled(s)) { - isa =3D isa_create(bus, "isa-fdc"); - d =3D DEVICE(isa); + d =3D DEVICE(&s->fdc); + qdev_set_parent_bus(d, BUS(bus)); qdev_prop_set_uint32(d, "iobase", get_fdc_iobase(s)); - qdev_prop_set_uint32(d, "irq", 6); - drive =3D drive_get(IF_FLOPPY, 0, 0); - if (drive !=3D NULL) { - qdev_prop_set_drive_nofail(d, "driveA", - blk_by_legacy_dinfo(drive)); - } - drive =3D drive_get(IF_FLOPPY, 0, 1); - if (drive !=3D NULL) { - qdev_prop_set_drive_nofail(d, "driveB", - blk_by_legacy_dinfo(drive)); - } - qdev_init_nofail(d); - s->fdc.dev =3D isa; trace_pc87312_info_floppy(get_fdc_iobase(s)); + object_property_set_bool(OBJECT(&s->fdc), true, "realized", + &local_err); + object_unref(OBJECT(&s->fdc)); + if (local_err) { + error_propagate(errp, local_err); + return; + } } =20 if (is_ide_enabled(s)) { @@ -363,6 +356,13 @@ static void pc87312_initfn(Object *obj) &error_abort); g_free(propname); } + + object_initialize(&s->fdc, sizeof(s->fdc), TYPE_ISA_FDC); + object_property_add_alias(obj, "fdc-driveA", + OBJECT(&s->fdc), "driveA", &error_abort); + object_property_add_alias(obj, "fdc-driveB", + OBJECT(&s->fdc), "driveB", &error_abort); + qdev_prop_set_uint32(DEVICE(&s->fdc), "irq", 6); } =20 static const VMStateDescription vmstate_pc87312 =3D { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index eb29d3c..272a284 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -530,6 +530,7 @@ static void ppc_prep_init(MachineState *machine) ISABus *isa_bus; ISADevice *isa; CharDriverState *chr; + DriveInfo *drive; qemu_irq *cpu_exit_irq; int ppc_boot_device; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; @@ -661,6 +662,16 @@ static void ppc_prep_init(MachineState *machine) g_free(name); } } + drive =3D drive_get(IF_FLOPPY, 0, 0); + if (drive !=3D NULL) { + qdev_prop_set_drive_nofail(dev, "fdc-driveA", + blk_by_legacy_dinfo(drive)); + } + drive =3D drive_get(IF_FLOPPY, 0, 1); + if (drive !=3D NULL) { + qdev_prop_set_drive_nofail(dev, "fdc-driveB", + blk_by_legacy_dinfo(drive)); + } qdev_prop_set_uint8(dev, "config", 13); /* fdc, ser0, ser1, par0 */ qdev_init_nofail(dev); =20 diff --git a/include/hw/isa/pc87312.h b/include/hw/isa/pc87312.h index 3256e0f..c49a06d 100644 --- a/include/hw/isa/pc87312.h +++ b/include/hw/isa/pc87312.h @@ -28,6 +28,7 @@ #include "hw/isa/isa.h" #include "hw/char/parallel.h" #include "hw/char/serial.h" +#include "hw/block/fdc.h" =20 =20 #define TYPE_PC87312 "pc87312" @@ -41,10 +42,7 @@ typedef struct PC87312State { =20 ISAParallelState parallel; ISASerialState uart[2]; - - struct { - ISADevice *dev; - } fdc; + FDCtrlISABus fdc; =20 struct { ISADevice *dev; --=20 2.1.4