diff options
author | Andreas Färber <afaerber@suse.de> | 2013-04-27 22:18:41 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-04-29 08:27:47 -0500 |
commit | 2f12688b9310a0001330df71d22ad6dc9f39dd29 (patch) | |
tree | 152b29f36e8897237019610e0a837227db49c82a | |
parent | 29bb5317cb7b23422b2612025d56055bbf0bbd02 (diff) |
ide: QOM'ify ISA IDE
Introduce type constant and cast macro to obsolete DO_UPCAST().
Add missing braces.
Prepares for ISA realizefn.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Message-id: 1367093935-29091-7-git-send-email-afaerber@suse.de
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/ide/isa.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/hw/ide/isa.c b/hw/ide/isa.c index e0d47bf7cf..5e7422fc2b 100644 --- a/hw/ide/isa.c +++ b/hw/ide/isa.c @@ -33,8 +33,12 @@ /***********************************************************/ /* ISA IDE definitions */ +#define TYPE_ISA_IDE "isa-ide" +#define ISA_IDE(obj) OBJECT_CHECK(ISAIDEState, (obj), TYPE_ISA_IDE) + typedef struct ISAIDEState { - ISADevice dev; + ISADevice parent_obj; + IDEBus bus; uint32_t iobase; uint32_t iobase2; @@ -44,7 +48,7 @@ typedef struct ISAIDEState { static void isa_ide_reset(DeviceState *d) { - ISAIDEState *s = container_of(d, ISAIDEState, dev.qdev); + ISAIDEState *s = ISA_IDE(d); ide_bus_reset(&s->bus); } @@ -63,9 +67,9 @@ static const VMStateDescription vmstate_ide_isa = { static int isa_ide_initfn(ISADevice *dev) { - ISAIDEState *s = DO_UPCAST(ISAIDEState, dev, dev); + ISAIDEState *s = ISA_IDE(dev); - ide_bus_new(&s->bus, &s->dev.qdev, 0); + ide_bus_new(&s->bus, DEVICE(dev), 0); ide_init_ioport(&s->bus, dev, s->iobase, s->iobase2); isa_init_irq(dev, &s->irq, s->isairq); ide_init2(&s->bus, s->irq); @@ -76,22 +80,27 @@ static int isa_ide_initfn(ISADevice *dev) ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int isairq, DriveInfo *hd0, DriveInfo *hd1) { - ISADevice *dev; + DeviceState *dev; + ISADevice *isadev; ISAIDEState *s; - dev = isa_create(bus, "isa-ide"); - qdev_prop_set_uint32(&dev->qdev, "iobase", iobase); - qdev_prop_set_uint32(&dev->qdev, "iobase2", iobase2); - qdev_prop_set_uint32(&dev->qdev, "irq", isairq); - if (qdev_init(&dev->qdev) < 0) + isadev = isa_create(bus, TYPE_ISA_IDE); + dev = DEVICE(isadev); + qdev_prop_set_uint32(dev, "iobase", iobase); + qdev_prop_set_uint32(dev, "iobase2", iobase2); + qdev_prop_set_uint32(dev, "irq", isairq); + if (qdev_init(dev) < 0) { return NULL; + } - s = DO_UPCAST(ISAIDEState, dev, dev); - if (hd0) + s = ISA_IDE(dev); + if (hd0) { ide_create_drive(&s->bus, 0, hd0); - if (hd1) + } + if (hd1) { ide_create_drive(&s->bus, 1, hd1); - return dev; + } + return isadev; } static Property isa_ide_properties[] = { @@ -112,7 +121,7 @@ static void isa_ide_class_initfn(ObjectClass *klass, void *data) } static const TypeInfo isa_ide_info = { - .name = "isa-ide", + .name = TYPE_ISA_IDE, .parent = TYPE_ISA_DEVICE, .instance_size = sizeof(ISAIDEState), .class_init = isa_ide_class_initfn, |