From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:59159) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGVqy-0001ay-3S for qemu-devel@nongnu.org; Wed, 19 Oct 2011 09:06:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RGVqu-00025U-Q0 for qemu-devel@nongnu.org; Wed, 19 Oct 2011 09:06:39 -0400 Received: from mail-wy0-f173.google.com ([74.125.82.173]:36959) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGVqu-00025B-LG for qemu-devel@nongnu.org; Wed, 19 Oct 2011 09:06:36 -0400 Received: by wyh15 with SMTP id 15so1894057wyh.4 for ; Wed, 19 Oct 2011 06:06:35 -0700 (PDT) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Wed, 19 Oct 2011 14:56:30 +0200 Message-Id: <1319028990-5076-2-git-send-email-benoit.canet@gmail.com> In-Reply-To: <1319028990-5076-1-git-send-email-benoit.canet@gmail.com> References: <1319028990-5076-1-git-send-email-benoit.canet@gmail.com> Subject: [Qemu-devel] [PATCH] 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?= Signed-off-by: Benoit Canet --- 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