From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:35385) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RIeJn-00022j-2C for qemu-devel@nongnu.org; Tue, 25 Oct 2011 06:33:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RIeJf-0004Ya-DF for qemu-devel@nongnu.org; Tue, 25 Oct 2011 06:33:14 -0400 Received: from mail-ww0-f53.google.com ([74.125.82.53]:36823) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RIeJf-0004YM-8k for qemu-devel@nongnu.org; Tue, 25 Oct 2011 06:33:07 -0400 Received: by wwi36 with SMTP id 36so455382wwi.10 for ; Tue, 25 Oct 2011 03:33:06 -0700 (PDT) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Tue, 25 Oct 2011 12:32:34 +0200 Message-Id: <1319538764-3954-2-git-send-email-benoit.canet@gmail.com> In-Reply-To: <1319538764-3954-1-git-send-email-benoit.canet@gmail.com> References: <1319538764-3954-1-git-send-email-benoit.canet@gmail.com> Subject: [Qemu-devel] [PATCH 01/11] integratorcp: convert control to sysbus List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Beno=C3=AEt=20Canet?= , avi@redhat.com Signed-off-by: Benoit Canet Reviewed-by: Peter Maydell --- hw/integratorcp.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 7f79560..7ad68b7 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -393,6 +393,11 @@ static int icp_pic_init(SysBusDevice *dev) /* CP control registers. */ +typedef struct icp_control_state { + SysBusDevice busdev; + MemoryRegion iomem; +} icp_control_state; + static uint64_t icp_control_read(void *opaque, target_phys_addr_t offset, unsigned size) { @@ -431,15 +436,14 @@ static const MemoryRegionOps icp_control_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static void icp_control_init(target_phys_addr_t base) +static int icp_control_init(SysBusDevice *dev) { - MemoryRegion *io; + icp_control_state *s = FROM_SYSBUS(icp_control_state, dev); - io = (MemoryRegion *)g_malloc0(sizeof(MemoryRegion)); - memory_region_init_io(io, &icp_control_ops, NULL, + memory_region_init_io(&s->iomem, &icp_control_ops, s, "control", 0x00800000); - memory_region_add_subregion(get_system_memory(), base, io); - /* ??? Save/restore. */ + sysbus_init_mmio_region(dev, &s->iomem); + return 0; } @@ -498,7 +502,7 @@ static void integratorcp_init(ram_addr_t ram_size, sysbus_create_simple("pl031", 0x15000000, pic[8]); sysbus_create_simple("pl011", 0x16000000, pic[1]); sysbus_create_simple("pl011", 0x17000000, pic[2]); - icp_control_init(0xcb000000); + sysbus_create_simple("integrator_control", 0xcb000000, NULL); sysbus_create_simple("pl050_keyboard", 0x18000000, pic[3]); sysbus_create_simple("pl050_mouse", 0x19000000, pic[4]); sysbus_create_varargs("pl181", 0x1c000000, pic[23], pic[24], NULL); @@ -541,6 +545,8 @@ static SysBusDeviceInfo core_info = { static void integratorcp_register_devices(void) { sysbus_register_dev("integrator_pic", sizeof(icp_pic_state), icp_pic_init); + sysbus_register_dev("integrator_control", sizeof(icp_control_state), + icp_control_init); sysbus_register_withprop(&core_info); } -- 1.7.5.4