From 29bb5317cb7b23422b2612025d56055bbf0bbd02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sat, 27 Apr 2013 22:18:40 +0200 Subject: [PATCH] i8259: QOM cleanups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Eliminate DO_UPCAST() for PICCommonState. Prepares for ISA realizefn. Also give the i8259_common type registration functions unique names while at it. Signed-off-by: Andreas Färber Signed-off-by: Andreas Färber Message-id: 1367093935-29091-6-git-send-email-afaerber@suse.de Signed-off-by: Anthony Liguori --- hw/i386/kvm/i8259.c | 2 +- hw/intc/i8259.c | 16 +++++++++------- hw/intc/i8259_common.c | 8 ++++---- include/hw/isa/i8259_internal.h | 3 ++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index ea77be8638..d961ecabbd 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -82,7 +82,7 @@ static void kvm_pic_put(PICCommonState *s) static void kvm_pic_reset(DeviceState *dev) { - PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, dev); + PICCommonState *s = PIC_COMMON(dev); s->elcr = 0; pic_reset_common(s); diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c index ce14bd0f94..fef00fca75 100644 --- a/hw/intc/i8259.c +++ b/hw/intc/i8259.c @@ -182,7 +182,7 @@ static void pic_intack(PICCommonState *s, int irq) int pic_read_irq(DeviceState *d) { - PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, d); + PICCommonState *s = PIC_COMMON(d); int irq, irq2, intno; irq = pic_get_irq(s); @@ -229,7 +229,7 @@ static void pic_init_reset(PICCommonState *s) static void pic_reset(DeviceState *dev) { - PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, dev); + PICCommonState *s = PIC_COMMON(dev); s->elcr = 0; pic_init_reset(s); @@ -361,7 +361,7 @@ static uint64_t pic_ioport_read(void *opaque, hwaddr addr, int pic_get_output(DeviceState *d) { - PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, d); + PICCommonState *s = PIC_COMMON(d); return (pic_get_irq(s) >= 0); } @@ -400,11 +400,13 @@ static const MemoryRegionOps pic_elcr_ioport_ops = { static void pic_init(PICCommonState *s) { + DeviceState *dev = DEVICE(s); + memory_region_init_io(&s->base_io, &pic_base_ioport_ops, s, "pic", 2); memory_region_init_io(&s->elcr_io, &pic_elcr_ioport_ops, s, "elcr", 1); - qdev_init_gpio_out(&s->dev.qdev, s->int_out, ARRAY_SIZE(s->int_out)); - qdev_init_gpio_in(&s->dev.qdev, pic_set_irq, 8); + qdev_init_gpio_out(dev, s->int_out, ARRAY_SIZE(s->int_out)); + qdev_init_gpio_in(dev, pic_set_irq, 8); } void pic_info(Monitor *mon, const QDict *qdict) @@ -416,7 +418,7 @@ void pic_info(Monitor *mon, const QDict *qdict) return; } for (i = 0; i < 2; i++) { - s = i == 0 ? DO_UPCAST(PICCommonState, dev.qdev, isa_pic) : slave_pic; + s = i == 0 ? PIC_COMMON(isa_pic) : slave_pic; monitor_printf(mon, "pic%d: irr=%02x imr=%02x isr=%02x hprio=%d " "irq_base=%02x rr_sel=%d elcr=%02x fnm=%d\n", i, s->irr, s->imr, s->isr, s->priority_add, @@ -467,7 +469,7 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq) irq_set[i + 8] = qdev_get_gpio_in(&dev->qdev, i); } - slave_pic = DO_UPCAST(PICCommonState, dev, dev); + slave_pic = PIC_COMMON(dev); return irq_set; } diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c index 996ba9dfdb..c2ba6a5ad9 100644 --- a/hw/intc/i8259_common.c +++ b/hw/intc/i8259_common.c @@ -68,7 +68,7 @@ static int pic_dispatch_post_load(void *opaque, int version_id) static int pic_init_common(ISADevice *dev) { - PICCommonState *s = DO_UPCAST(PICCommonState, dev, dev); + PICCommonState *s = PIC_COMMON(dev); PICCommonClass *info = PIC_COMMON_GET_CLASS(s); info->init(s); @@ -78,7 +78,7 @@ static int pic_init_common(ISADevice *dev) isa_register_ioport(NULL, &s->elcr_io, s->elcr_addr); } - qdev_set_legacy_instance_id(&s->dev.qdev, s->iobase, 1); + qdev_set_legacy_instance_id(DEVICE(dev), s->iobase, 1); return 0; } @@ -153,9 +153,9 @@ static const TypeInfo pic_common_type = { .abstract = true, }; -static void register_types(void) +static void pic_common_register_types(void) { type_register_static(&pic_common_type); } -type_init(register_types); +type_init(pic_common_register_types) diff --git a/include/hw/isa/i8259_internal.h b/include/hw/isa/i8259_internal.h index d3ddb27f4f..b4e757a461 100644 --- a/include/hw/isa/i8259_internal.h +++ b/include/hw/isa/i8259_internal.h @@ -48,7 +48,8 @@ typedef struct PICCommonClass } PICCommonClass; struct PICCommonState { - ISADevice dev; + ISADevice parent_obj; + uint8_t last_irr; /* edge detection */ uint8_t irr; /* interrupt request register */ uint8_t imr; /* interrupt mask register */