Versatile Express: Add modelling of NOR flash
v3 cover Versatile Express: Add modelling of NOR flash
This patch series adds modelling of the two NOR flash banks found on the Versatile Express motherboard. Tested with U-Boot running on an emulated Versatile Express, with either A9 or A15 CoreTile. The alias of the first NOR flash in the Cortex-A Series memory map is not modelled.
Changes in v3:
- When registering either flash bank as CFI device results in an error, terminate QEMU.
Changes in v2:
- Fix definition of NOR flash 0 address and remove flash alias in Cortex-A Series memory map.
- Use drive_get_next() instead of drive_get() to get a backing storage for each flash bank.
Francesco Lavra (2):
Versatile Express: Fix NOR flash 0 address and remove flash alias Versatile Express: Add modelling of NOR flash
hw/vexpress.c | 33 ++++++++++++++++++++++++++------- 1 files changed, 26 insertions(+), 7 deletions(-)
Signature · 1 line
1.7.5.4
PATCH v2 1/2 Versatile Express: Fix NOR flash 0 address and remove flash alias
In the A series memory map (implemented in the Cortex A15 CoreTile), the first NOR flash bank (flash 0) is mapped to address 0x08000000, while address 0x00000000 can be configured as alias to either the first or the second flash bank. This patch fixes the definition of flash 0 address, and for simplicity removes the alias definition.
--- hw/vexpress.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-)
hw/vexpress.c +2 -5
@@ -62,7 +62,6 @@ enum {VE_COMPACTFLASH ,VE_CLCD ,VE_NORFLASH0 , -VE_NORFLASH0ALIAS ,VE_NORFLASH1 ,VE_SRAM , VE_VIDEORAM,
@@ -104,9 +103,8 @@ static target_phys_addr_t motherboard_legacy_map[] = { };static target_phys_addr_t motherboard_aseries_map[] = { -/* CS0: 0x00000000 .. 0x0c000000 */ - [VE_NORFLASH0 ] =0x00000000 , - [VE_NORFLASH0ALIAS ] =0x08000000 , +/* CS0: 0x08000000 .. 0x0c000000 */ + [VE_NORFLASH0 ] =0x08000000 ,/* CS4: 0x0c000000 .. 0x10000000 */ [VE_NORFLASH1 ] =0x0c000000 ,/* CS5: 0x10000000 .. 0x14000000 */
@@ -413,7 +411,6 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,sysbus_create_simple ("pl111" , map[VE_CLCD ], pic[14 ]);/* VE_NORFLASH0: not modelled */ -/* VE_NORFLASH0ALIAS: not modelled */ /* VE_NORFLASH1: not modelled */ sram_size =0x2000000 ;
Signature · 1 line
1.7.5.4
PATCH v3 2/2 Versatile Express: Add modelling of NOR flash
In reply to Francesco LavraThis patch adds modelling of the two NOR flash banks found on the Versatile Express motherboard. Tested with U-Boot running on an emulated Versatile Express, with either A9 or A15 CoreTile.
---
Changes in v3:
- When registering either flash bank as CFI device results in an error, terminate QEMU.
Changes in v2:
- Use drive_get_next() instead of drive_get() to get a backing storage for each flash bank.
hw/vexpress.c | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-)
hw/vexpress.c +24 -2
@@ -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;
@@ -355,6 +359,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 );
@@ -410,8 +415,25 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard,sysbus_create_simple ("pl111" , map[VE_CLCD ], pic[14 ]); -/* VE_NORFLASH0: not modelled */ -/* VE_NORFLASH1: not modelled */ + dinfo =drive_get_next (IF_PFLASH ); +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" ); +exit (1 ); + } + + dinfo =drive_get_next (IF_PFLASH ); +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" ); +exit (1 ); + } sram_size =0x2000000 ;memory_region_init_ram (sram,"vexpress.sram" , sram_size);
Signature · 1 line
1.7.5.4
Quoted 5 lines · Francesco Lavra
This patch adds modelling of the two NOR flash banks found on the Versatile Express motherboard. Tested with U-Boot running on an emulated Versatile Express, with either A9 or A15 CoreTile.
Signed-off-by Francesco Lavra <[email protected]>
Thanks -- I've added these two patches to arm-devs.next.
-- PMM