From nobody Tue Feb 10 13:34:06 2026 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506264778089167.33967054224286; Sun, 24 Sep 2017 07:52:58 -0700 (PDT) Received: from localhost ([::1]:38439 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dw8H1-0006Vz-3x for importer@patchew.org; Sun, 24 Sep 2017 10:52:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dw8Cb-0002gb-E8 for qemu-devel@nongnu.org; Sun, 24 Sep 2017 10:48:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dw8Ca-0002H1-DD for qemu-devel@nongnu.org; Sun, 24 Sep 2017 10:48:13 -0400 Received: from chuckie.co.uk ([82.165.15.123]:49769 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dw8CX-00029N-8T; Sun, 24 Sep 2017 10:48:09 -0400 Received: from host86-191-82-173.range86-191.btcentralplus.com ([86.191.82.173] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1dw8CS-0006gI-Kh; Sun, 24 Sep 2017 15:48:05 +0100 From: Mark Cave-Ayland To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org, david@gibson.dropbear.id.au Date: Sun, 24 Sep 2017 15:47:41 +0100 Message-Id: <1506264466-28252-3-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1506264466-28252-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1506264466-28252-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.82.173 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCH 2/7] mac_dbdma: QOMify X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mark Cave-Ayland --- hw/misc/macio/mac_dbdma.c | 59 ++++++++++++++++++++++++++++++++++++----= ---- include/hw/ppc/mac_dbdma.h | 6 +++++ 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index 9795172..302f131 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -851,13 +851,14 @@ static const VMStateDescription vmstate_dbdma =3D { } }; =20 -static void dbdma_reset(void *opaque) +static void mac_dbdma_reset(DeviceState *d) { - DBDMAState *s =3D opaque; + DBDMAState *s =3D MAC_DBDMA(d); int i; =20 - for (i =3D 0; i < DBDMA_CHANNELS; i++) + for (i =3D 0; i < DBDMA_CHANNELS; i++) { memset(s->channels[i].regs, 0, DBDMA_SIZE); + } } =20 static void dbdma_unassigned_rw(DBDMA_io *io) @@ -888,9 +889,22 @@ static void dbdma_unassigned_flush(DBDMA_io *io) void* DBDMA_init (MemoryRegion **dbdma_mem) { DBDMAState *s; - int i; + SysBusDevice *sbd; + + s =3D MAC_DBDMA(object_new(TYPE_MAC_DBDMA)); + object_property_set_bool(OBJECT(s), true, "realized", NULL); + + sbd =3D SYS_BUS_DEVICE(s); + *dbdma_mem =3D sysbus_mmio_get_region(sbd, 0); =20 - s =3D g_malloc0(sizeof(DBDMAState)); + return s; +} + +static void mac_dbdma_init(Object *obj) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + DBDMAState *s =3D MAC_DBDMA(obj); + int i; =20 for (i =3D 0; i < DBDMA_CHANNELS; i++) { DBDMA_channel *ch =3D &s->channels[i]; @@ -901,12 +915,37 @@ void* DBDMA_init (MemoryRegion **dbdma_mem) ch->io.channel =3D ch; } =20 - memory_region_init_io(&s->mem, NULL, &dbdma_ops, s, "dbdma", 0x1000); - *dbdma_mem =3D &s->mem; - vmstate_register(NULL, -1, &vmstate_dbdma, s); - qemu_register_reset(dbdma_reset, s); + memory_region_init_io(&s->mem, obj, &dbdma_ops, s, "dbdma", 0x1000); + sysbus_init_mmio(sbd, &s->mem); +} + +static void mac_dbdma_realize(DeviceState *dev, Error **errp) +{ + DBDMAState *s =3D MAC_DBDMA(dev); =20 s->bh =3D qemu_bh_new(DBDMA_run_bh, s); +} =20 - return s; +static void mac_dbdma_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D mac_dbdma_realize; + dc->reset =3D mac_dbdma_reset; + dc->vmsd =3D &vmstate_dbdma; } + +static const TypeInfo mac_dbdma_type_info =3D { + .name =3D TYPE_MAC_DBDMA, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(DBDMAState), + .instance_init =3D mac_dbdma_init, + .class_init =3D mac_dbdma_class_init +}; + +static void mac_dbdma_register_types(void) +{ + type_register_static(&mac_dbdma_type_info); +} + +type_init(mac_dbdma_register_types) diff --git a/include/hw/ppc/mac_dbdma.h b/include/hw/ppc/mac_dbdma.h index 21bd66f..4bc6274 100644 --- a/include/hw/ppc/mac_dbdma.h +++ b/include/hw/ppc/mac_dbdma.h @@ -26,6 +26,7 @@ #include "exec/memory.h" #include "qemu/iov.h" #include "sysemu/dma.h" +#include "hw/sysbus.h" =20 typedef struct DBDMA_io DBDMA_io; =20 @@ -160,6 +161,8 @@ typedef struct DBDMA_channel { } DBDMA_channel; =20 typedef struct { + SysBusDevice parent_obj; + MemoryRegion mem; DBDMA_channel channels[DBDMA_CHANNELS]; QEMUBH *bh; @@ -173,4 +176,7 @@ void DBDMA_register_channel(void *dbdma, int nchan, qem= u_irq irq, void DBDMA_kick(DBDMAState *dbdma); void* DBDMA_init (MemoryRegion **dbdma_mem); =20 +#define TYPE_MAC_DBDMA "mac-dbdma" +#define MAC_DBDMA(obj) OBJECT_CHECK(DBDMAState, (obj), TYPE_MAC_DBDMA) + #endif --=20 1.7.10.4