From patchwork Sat Apr 27 20:18:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andreas_F=C3=A4rber?= X-Patchwork-Id: 240181 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 082B12C00AD for ; Sun, 28 Apr 2013 06:23:11 +1000 (EST) Received: from localhost ([::1]:46039 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWBeH-0006F9-56 for incoming@patchwork.ozlabs.org; Sat, 27 Apr 2013 16:23:09 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49816) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWBaW-0000XP-Jp for qemu-devel@nongnu.org; Sat, 27 Apr 2013 16:19:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UWBaS-000225-Vc for qemu-devel@nongnu.org; Sat, 27 Apr 2013 16:19:16 -0400 Received: from cantor2.suse.de ([195.135.220.15]:41907 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWBaS-000221-MY for qemu-devel@nongnu.org; Sat, 27 Apr 2013 16:19:12 -0400 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 42B915E00020B for ; Sat, 27 Apr 2013 22:19:12 +0200 (CEST) From: =?UTF-8?q?Andreas=20F=C3=A4rber?= To: qemu-devel@nongnu.org Date: Sat, 27 Apr 2013 22:18:42 +0200 Message-Id: <1367093935-29091-8-git-send-email-afaerber@suse.de> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1367093935-29091-1-git-send-email-afaerber@suse.de> References: <1367093935-29091-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x X-Received-From: 195.135.220.15 Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= Subject: [Qemu-devel] [PATCH for-1.5 v2 07/20] m48t59: QOM'ify ISA M48T59 NVRAM X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Introduce type constant and cast macro to obsolete DO_UPCAST() and container_of(). Prepares for ISA realizefn. Signed-off-by: Andreas Färber --- hw/timer/m48t59.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index 5019e06..45753d8 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -72,8 +72,13 @@ struct M48t59State { uint8_t lock; }; +#define TYPE_ISA_M48T59 "m48t59_isa" +#define ISA_M48T59(obj) \ + OBJECT_CHECK(M48t59ISAState, (obj), TYPE_ISA_M48T59) + typedef struct M48t59ISAState { - ISADevice busdev; + ISADevice parent_obj; + M48t59State state; MemoryRegion io; } M48t59ISAState; @@ -608,7 +613,7 @@ static void m48t59_reset_common(M48t59State *NVRAM) static void m48t59_reset_isa(DeviceState *d) { - M48t59ISAState *isa = container_of(d, M48t59ISAState, busdev.qdev); + M48t59ISAState *isa = ISA_M48T59(d); M48t59State *NVRAM = &isa->state; m48t59_reset_common(NVRAM); @@ -665,20 +670,22 @@ M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, int model) { M48t59ISAState *d; - ISADevice *dev; + ISADevice *isadev; + DeviceState *dev; M48t59State *s; - dev = isa_create(bus, "m48t59_isa"); - qdev_prop_set_uint32(&dev->qdev, "model", model); - qdev_prop_set_uint32(&dev->qdev, "size", size); - qdev_prop_set_uint32(&dev->qdev, "io_base", io_base); - qdev_init_nofail(&dev->qdev); - d = DO_UPCAST(M48t59ISAState, busdev, dev); + isadev = isa_create(bus, TYPE_ISA_M48T59); + dev = DEVICE(isadev); + qdev_prop_set_uint32(dev, "model", model); + qdev_prop_set_uint32(dev, "size", size); + qdev_prop_set_uint32(dev, "io_base", io_base); + qdev_init_nofail(dev); + d = ISA_M48T59(isadev); s = &d->state; memory_region_init_io(&d->io, &m48t59_io_ops, s, "m48t59", 4); if (io_base != 0) { - isa_register_ioport(dev, &d->io, io_base); + isa_register_ioport(isadev, &d->io, io_base); } return s; @@ -698,7 +705,7 @@ static void m48t59_init_common(M48t59State *s) static int m48t59_init_isa1(ISADevice *dev) { - M48t59ISAState *d = DO_UPCAST(M48t59ISAState, busdev, dev); + M48t59ISAState *d = ISA_M48T59(dev); M48t59State *s = &d->state; isa_init_irq(dev, &s->IRQ, 8); @@ -728,7 +735,7 @@ static Property m48t59_isa_properties[] = { DEFINE_PROP_END_OF_LIST(), }; -static void m48t59_init_class_isa1(ObjectClass *klass, void *data) +static void m48t59_isa_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); ISADeviceClass *ic = ISA_DEVICE_CLASS(klass); @@ -739,10 +746,10 @@ static void m48t59_init_class_isa1(ObjectClass *klass, void *data) } static const TypeInfo m48t59_isa_info = { - .name = "m48t59_isa", + .name = TYPE_ISA_M48T59, .parent = TYPE_ISA_DEVICE, .instance_size = sizeof(M48t59ISAState), - .class_init = m48t59_init_class_isa1, + .class_init = m48t59_isa_class_init, }; static Property m48t59_properties[] = {