From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34826) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S8jcG-0000DZ-Bf for qemu-devel@nongnu.org; Fri, 16 Mar 2012 22:43:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S8jcE-0005Gt-4x for qemu-devel@nongnu.org; Fri, 16 Mar 2012 22:43:35 -0400 Received: from mail-wi0-f175.google.com ([209.85.212.175]:55790) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S8jcD-0005Gp-Pf for qemu-devel@nongnu.org; Fri, 16 Mar 2012 22:43:34 -0400 Received: by wibhn6 with SMTP id hn6so1459054wib.10 for ; Fri, 16 Mar 2012 19:43:31 -0700 (PDT) From: Marek Vasut Date: Sat, 17 Mar 2012 03:43:26 +0100 Message-Id: <1331952206-12507-1-git-send-email-marek.vasut@gmail.com> Subject: [Qemu-devel] [PATCH] QEMU: Add pflash support for versatile and integrator List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marek Vasut Signed-off-by: Marek Vasut --- hw/integratorcp.c | 26 ++++++++++++++++++++++++++ hw/versatilepb.c | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 0 deletions(-) diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 5b06c81..2703ea6 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -14,6 +14,9 @@ #include "net.h" #include "exec-memory.h" #include "sysemu.h" +#include "blockdev.h" +#include "exec-memory.h" +#include "flash.h" typedef struct { SysBusDevice busdev; @@ -451,6 +454,13 @@ static void integratorcp_init(ram_addr_t ram_size, qemu_irq *cpu_pic; DeviceState *dev; int i; + DriveInfo *dinfo; + +#ifdef TARGET_WORDS_BIGENDIAN + const int be = 1; +#else + const int be = 0; +#endif if (!cpu_model) cpu_model = "arm926"; @@ -469,6 +479,22 @@ static void integratorcp_init(ram_addr_t ram_size, memory_region_init_alias(ram_alias, "ram.alias", ram, 0, ram_size); memory_region_add_subregion(address_space_mem, 0x80000000, ram_alias); + dinfo = drive_get(IF_PFLASH, 0, 0); + if (!dinfo) { + fprintf(stderr, "Flash image must be given with the " + "'pflash' parameter\n"); + exit(1); + } + + if (!pflash_cfi01_register(0x24000000, + NULL, "integrator.flash0", 0x01000000, + dinfo->bdrv, 0x40000, + 0x01000000 / 0x40000, 4, 0, 0, 0, 0, + be)) { + fprintf(stderr, "qemu: Error registering flash memory.\n"); + exit(1); + } + dev = qdev_create(NULL, "integrator_core"); qdev_prop_set_uint32(dev, "memsz", ram_size >> 20); qdev_init_nofail(dev); diff --git a/hw/versatilepb.c b/hw/versatilepb.c index b9102f4..ad8429e 100644 --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -17,6 +17,7 @@ #include "boards.h" #include "blockdev.h" #include "exec-memory.h" +#include "flash.h" /* Primary interrupt controller. */ @@ -181,6 +182,13 @@ static void versatile_init(ram_addr_t ram_size, NICInfo *nd; int n; int done_smc = 0; + DriveInfo *dinfo; + +#ifdef TARGET_WORDS_BIGENDIAN + const int be = 1; +#else + const int be = 0; +#endif if (!cpu_model) cpu_model = "arm926"; @@ -195,6 +203,22 @@ static void versatile_init(ram_addr_t ram_size, /* SDRAM at address zero. */ memory_region_add_subregion(sysmem, 0, ram); + dinfo = drive_get(IF_PFLASH, 0, 0); + if (!dinfo) { + fprintf(stderr, "Flash image must be given with the " + "'pflash' parameter\n"); + exit(1); + } + + if (!pflash_cfi01_register(0x34000000, + NULL, "versatile.flash0", 0x8000000, + dinfo->bdrv, 0x40000, + 0x8000000 / 0x40000, 4, 0, 0, 0, 0, + be)) { + fprintf(stderr, "qemu: Error registering flash memory.\n"); + exit(1); + } + sysctl = qdev_create(NULL, "realview_sysctl"); qdev_prop_set_uint32(sysctl, "sys_id", 0x41007004); qdev_prop_set_uint32(sysctl, "proc_id", 0x02000000); -- 1.7.9