From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T97yR-0002WL-7D for qemu-devel@nongnu.org; Wed, 05 Sep 2012 01:16:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T97yQ-0006dt-6a for qemu-devel@nongnu.org; Wed, 05 Sep 2012 01:16:23 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:34209) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T97yQ-0006dk-06 for qemu-devel@nongnu.org; Wed, 05 Sep 2012 01:16:22 -0400 Message-ID: <5046E022.5020009@weilnetz.de> Date: Wed, 05 Sep 2012 07:16:18 +0200 From: Stefan Weil MIME-Version: 1.0 References: <5046357B.1010101@gmail.com> In-Reply-To: <5046357B.1010101@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] Versatile Express: add modelling of NOR flash List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Francesco Lavra Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, paul@codesourcery.com Am 04.09.2012 19:08, schrieb Francesco Lavra: > This patch adds modelling of the two NOR flash banks found in the > Versatile Express motherboard. Tested with U-Boot running on an emulated > Versatile Express A9. The alias of the first NOR flash in the Cortex-A > Series memory map is not modelled. > > Signed-off-by: Francesco Lavra > --- > hw/vexpress.c | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > diff --git a/hw/vexpress.c b/hw/vexpress.c > index b615844..695892b 100644 > --- a/hw/vexpress.c > +++ b/hw/vexpress.c > @@ -29,8 +29,12 @@ > #include "sysemu.h" > #include "boards.h" > #include "exec-memory.h" > +#include "blockdev.h" > +#include "flash.h" > > #define VEXPRESS_BOARD_ID 0x8e0 > +#define VEXPRESS_FLASH_SIZE (64 * 1024 * 1024) > +#define VEXPRESS_FLASH_SECT_SIZE (256 * 1024) > > static struct arm_boot_info vexpress_binfo; > > @@ -357,6 +361,7 @@ static void vexpress_common_init(const VEDBoardInfo > *daughterboard, > qemu_irq pic[64]; > uint32_t proc_id; > uint32_t sys_id; > + DriveInfo *dinfo; > ram_addr_t vram_size, sram_size; > MemoryRegion *sysmem = get_system_memory(); > MemoryRegion *vram = g_new(MemoryRegion, 1); > @@ -412,9 +417,25 @@ static void vexpress_common_init(const VEDBoardInfo > *daughterboard, > > sysbus_create_simple("pl111", map[VE_CLCD], pic[14]); > > - /* VE_NORFLASH0: not modelled */ > + dinfo = drive_get(IF_PFLASH, 0, 0); > + if (!pflash_cfi01_register(map[VE_NORFLASH0], NULL, "vexpress.flash0", > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL, > + VEXPRESS_FLASH_SECT_SIZE, > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE, 4, > + 0x00, 0x89, 0x00, 0x18, 0)) { > + fprintf(stderr, "vexpress: error registering flash 0.\n"); > + } > + > /* VE_NORFLASH0ALIAS: not modelled */ What about that alias? It's not difficult to add it, too. Just look for memory_region_init_alias in the code to see how it is done (hw/mips_malta.c has an alias region for flash). Regards, > > - /* VE_NORFLASH1: not modelled */ > + > + dinfo = drive_get(IF_PFLASH, 0, 1); > + if (!pflash_cfi01_register(map[VE_NORFLASH1], NULL, "vexpress.flash1", > + VEXPRESS_FLASH_SIZE, dinfo ? dinfo->bdrv : NULL, > + VEXPRESS_FLASH_SECT_SIZE, > + VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE, 4, > + 0x00, 0x89, 0x00, 0x18, 0)) { > + fprintf(stderr, "vexpress: error registering flash 1.\n"); > + } > > sram_size = 0x2000000; > memory_region_init_ram(sram, "vexpress.sram", sram_size);