From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3t15-000424-Ir for qemu-devel@nongnu.org; Mon, 29 Jul 2013 15:22:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V3t0x-0002ZQ-0E for qemu-devel@nongnu.org; Mon, 29 Jul 2013 15:21:59 -0400 Received: from cantor2.suse.de ([195.135.220.15]:53405 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V3t0w-0002ZD-Lz for qemu-devel@nongnu.org; Mon, 29 Jul 2013 15:21:50 -0400 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 36407A52BF for ; Mon, 29 Jul 2013 21:21:50 +0200 (CEST) From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Mon, 29 Jul 2013 21:18:59 +0200 Message-Id: <1375125630-24869-83-git-send-email-afaerber@suse.de> In-Reply-To: <1375125630-24869-1-git-send-email-afaerber@suse.de> References: <1375125630-24869-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] [PULL 082/173] pl061: QOM'ify pl061 and pl061_luminary List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= Let pl061_luminary inherit from pl061, with differing instance_init. Introduce type constant and use QOM casts. Signed-off-by: Andreas F=C3=A4rber --- hw/gpio/pl061.c | 52 ++++++++++++++++++++++++++-------------------------= - 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c index e97ad8a..dd4ea29 100644 --- a/hw/gpio/pl061.c +++ b/hw/gpio/pl061.c @@ -28,8 +28,12 @@ static const uint8_t pl061_id[12] =3D static const uint8_t pl061_id_luminary[12] =3D { 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x18, 0x01, 0x0d, 0xf0, 0x05, 0x= b1 }; =20 +#define TYPE_PL061 "pl061" +#define PL061(obj) OBJECT_CHECK(PL061State, (obj), TYPE_PL061) + typedef struct PL061State { - SysBusDevice busdev; + SysBusDevice parent_obj; + MemoryRegion iomem; uint32_t locked; uint32_t data; @@ -272,27 +276,32 @@ static const MemoryRegionOps pl061_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static int pl061_init(SysBusDevice *dev, const unsigned char *id) +static int pl061_initfn(SysBusDevice *sbd) { - PL061State *s =3D FROM_SYSBUS(PL061State, dev); - s->id =3D id; + DeviceState *dev =3D DEVICE(sbd); + PL061State *s =3D PL061(dev); + memory_region_init_io(&s->iomem, OBJECT(s), &pl061_ops, s, "pl061", = 0x1000); - sysbus_init_mmio(dev, &s->iomem); - sysbus_init_irq(dev, &s->irq); - qdev_init_gpio_in(&dev->qdev, pl061_set_irq, 8); - qdev_init_gpio_out(&dev->qdev, s->out, 8); + sysbus_init_mmio(sbd, &s->iomem); + sysbus_init_irq(sbd, &s->irq); + qdev_init_gpio_in(dev, pl061_set_irq, 8); + qdev_init_gpio_out(dev, s->out, 8); pl061_reset(s); return 0; } =20 -static int pl061_init_luminary(SysBusDevice *dev) +static void pl061_luminary_init(Object *obj) { - return pl061_init(dev, pl061_id_luminary); + PL061State *s =3D PL061(obj); + + s->id =3D pl061_id_luminary; } =20 -static int pl061_init_arm(SysBusDevice *dev) +static void pl061_init(Object *obj) { - return pl061_init(dev, pl061_id); + PL061State *s =3D PL061(obj); + + s->id =3D pl061_id; } =20 static void pl061_class_init(ObjectClass *klass, void *data) @@ -300,31 +309,22 @@ static void pl061_class_init(ObjectClass *klass, vo= id *data) DeviceClass *dc =3D DEVICE_CLASS(klass); SysBusDeviceClass *k =3D SYS_BUS_DEVICE_CLASS(klass); =20 - k->init =3D pl061_init_arm; + k->init =3D pl061_initfn; dc->vmsd =3D &vmstate_pl061; } =20 static const TypeInfo pl061_info =3D { - .name =3D "pl061", + .name =3D TYPE_PL061, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(PL061State), + .instance_init =3D pl061_init, .class_init =3D pl061_class_init, }; =20 -static void pl061_luminary_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - SysBusDeviceClass *k =3D SYS_BUS_DEVICE_CLASS(klass); - - k->init =3D pl061_init_luminary; - dc->vmsd =3D &vmstate_pl061; -} - static const TypeInfo pl061_luminary_info =3D { .name =3D "pl061_luminary", - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(PL061State), - .class_init =3D pl061_luminary_class_init, + .parent =3D TYPE_PL061, + .instance_init =3D pl061_luminary_init, }; =20 static void pl061_register_types(void) --=20 1.8.1.4