qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Versatile Express: add modelling of NOR flash
@ 2012-09-04 17:08 Francesco Lavra
  2012-09-05  5:16 ` Stefan Weil
  0 siblings, 1 reply; 7+ messages in thread
From: Francesco Lavra @ 2012-09-04 17:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, paul

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 <francescolavra.fl@gmail.com>
---
 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 */
-    /* 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);
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-09-17 17:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-04 17:08 [Qemu-devel] [PATCH] Versatile Express: add modelling of NOR flash Francesco Lavra
2012-09-05  5:16 ` Stefan Weil
2012-09-05  8:47   ` Peter Maydell
2012-09-05 19:07     ` Francesco Lavra
2012-09-15  7:45       ` Francesco Lavra
2012-09-17 13:21       ` Peter Maydell
2012-09-17 17:29         ` Francesco Lavra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).