From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TcmKY-0007U9-Pc for qemu-devel@nongnu.org; Sun, 25 Nov 2012 19:13:50 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TcmKS-0000Gh-Sr for qemu-devel@nongnu.org; Sun, 25 Nov 2012 19:13:46 -0500 Received: from cantor2.suse.de ([195.135.220.15]:46221 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TcmKS-0000G2-Je for qemu-devel@nongnu.org; Sun, 25 Nov 2012 19:13:40 -0500 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Mon, 26 Nov 2012 01:12:21 +0100 Message-Id: <1353888766-6951-10-git-send-email-afaerber@suse.de> In-Reply-To: <1353888766-6951-1-git-send-email-afaerber@suse.de> References: <1353888766-6951-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] [RFC 09/34] fdc: QOM'ify ISA floppy controller List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , =?UTF-8?q?Andreas=20F=C3=A4rber?= , anthony@codemonkey.ws, Markus Armbruster Introduce type constant and cast macro to obsolete DO_UPCAST(). Reuse type constant for PC machine compatibility settings. Prepares for ISA realizefn. Signed-off-by: Andreas F=C3=A4rber Cc: Markus Armbruster --- hw/fdc.c | 23 +++++++++++++---------- hw/fdc.h | 2 ++ hw/pc_piix.c | 2 +- 3 Dateien ge=C3=A4ndert, 16 Zeilen hinzugef=C3=BCgt(+), 11 Zeilen entfer= nt(-) diff --git a/hw/fdc.c b/hw/fdc.c index 29b5449..edd7483 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -550,8 +550,11 @@ typedef struct FDCtrlSysBus { struct FDCtrl state; } FDCtrlSysBus; =20 +#define ISA_FDC(obj) OBJECT_CHECK(FDCtrlISABus, (obj), TYPE_ISA_FDC) + typedef struct FDCtrlISABus { - ISADevice busdev; + ISADevice parent_obj; + uint32_t iobase; uint32_t irq; uint32_t dma; @@ -779,7 +782,7 @@ static void fdctrl_external_reset_sysbus(DeviceState = *d) =20 static void fdctrl_external_reset_isa(DeviceState *d) { - FDCtrlISABus *isa =3D container_of(d, FDCtrlISABus, busdev.qdev); + FDCtrlISABus *isa =3D ISA_FDC(d); FDCtrl *s =3D &isa->state; =20 fdctrl_reset(s, 0); @@ -2022,7 +2025,7 @@ ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo *= *fds) { ISADevice *dev; =20 - dev =3D isa_try_create(bus, "isa-fdc"); + dev =3D isa_try_create(bus, TYPE_ISA_FDC); if (!dev) { return NULL; } @@ -2117,13 +2120,13 @@ static const MemoryRegionPortio fdc_portio_list[]= =3D { =20 static int isabus_fdc_init1(ISADevice *dev) { - FDCtrlISABus *isa =3D DO_UPCAST(FDCtrlISABus, busdev, dev); + FDCtrlISABus *isa =3D ISA_FDC(dev); FDCtrl *fdctrl =3D &isa->state; int ret; =20 isa_register_portio_list(dev, isa->iobase, fdc_portio_list, fdctrl, = "fdc"); =20 - isa_init_irq(&isa->busdev, &fdctrl->irq, isa->irq); + isa_init_irq(dev, &fdctrl->irq, isa->irq); fdctrl->dma_chann =3D isa->dma; =20 qdev_set_legacy_instance_id(&dev->qdev, isa->iobase, 2); @@ -2170,7 +2173,7 @@ static int sun4m_fdc_init1(SysBusDevice *dev) =20 FDriveType isa_fdc_get_drive_type(ISADevice *fdc, int i) { - FDCtrlISABus *isa =3D DO_UPCAST(FDCtrlISABus, busdev, fdc); + FDCtrlISABus *isa =3D ISA_FDC(fdc); =20 return isa->state.drives[i].drive; } @@ -2198,7 +2201,7 @@ static Property isa_fdc_properties[] =3D { DEFINE_PROP_END_OF_LIST(), }; =20 -static void isabus_fdc_class_init1(ObjectClass *klass, void *data) +static void isabus_fdc_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); ISADeviceClass *ic =3D ISA_DEVICE_CLASS(klass); @@ -2210,11 +2213,11 @@ static void isabus_fdc_class_init1(ObjectClass *k= lass, void *data) dc->props =3D isa_fdc_properties; } =20 -static TypeInfo isa_fdc_info =3D { - .name =3D "isa-fdc", +static const TypeInfo isa_fdc_info =3D { + .name =3D TYPE_ISA_FDC, .parent =3D TYPE_ISA_DEVICE, .instance_size =3D sizeof(FDCtrlISABus), - .class_init =3D isabus_fdc_class_init1, + .class_init =3D isabus_fdc_class_init, }; =20 static const VMStateDescription vmstate_sysbus_fdc =3D{ diff --git a/hw/fdc.h b/hw/fdc.h index a8f6f7c..d48b2f8 100644 --- a/hw/fdc.h +++ b/hw/fdc.h @@ -13,6 +13,8 @@ typedef enum FDriveType { FDRIVE_DRV_NONE =3D 0x03, /* No drive connected */ } FDriveType; =20 +#define TYPE_ISA_FDC "isa-fdc" + ISADevice *fdctrl_init_isa(ISABus *bus, DriveInfo **fds); void fdctrl_init_sysbus(qemu_irq irq, int dma_chann, hwaddr mmio_base, DriveInfo **fds); diff --git a/hw/pc_piix.c b/hw/pc_piix.c index cfa839c..7791e4a 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -449,7 +449,7 @@ static QEMUMachine pc_machine_v1_1 =3D { .property =3D "rom_only",\ .value =3D stringify(1),\ }, {\ - .driver =3D "isa-fdc",\ + .driver =3D TYPE_ISA_FDC,\ .property =3D "check_media_rate",\ .value =3D "off",\ }, {\ --=20 1.7.10.4