Re: [PATCH v2 2/7] hw/arm/musicpal: Open-code pflash_cfi02_register() call

2021-04-21 Thread Richard Henderson

On 4/19/21 2:43 AM, Philippe Mathieu-Daudé wrote:

To be able to manually map the flash region on the main memory
(in the next commit), first expand the pflash_cfi02_register
in place.

Signed-off-by: Philippe Mathieu-Daudé 
---
  hw/arm/musicpal.c | 27 +--
  1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 9cebece2de0..8b58b66f263 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -10,6 +10,7 @@
   */
  
  #include "qemu/osdep.h"

+#include "qemu/units.h"
  #include "qapi/error.h"
  #include "cpu.h"
  #include "hw/sysbus.h"
@@ -1640,6 +1641,7 @@ static void musicpal_init(MachineState *machine)
  /* Register flash */
  dinfo = drive_get(IF_PFLASH, 0, 0);
  if (dinfo) {
+static const size_t sector_size = 64 * KiB;


Drop the static.  We do not need permanent storage for this.
Otherwise,

Reviewed-by: Richard Henderson 

r~



[PATCH v2 2/7] hw/arm/musicpal: Open-code pflash_cfi02_register() call

2021-04-19 Thread Philippe Mathieu-Daudé
To be able to manually map the flash region on the main memory
(in the next commit), first expand the pflash_cfi02_register
in place.

Signed-off-by: Philippe Mathieu-Daudé 
---
 hw/arm/musicpal.c | 27 +--
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 9cebece2de0..8b58b66f263 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -10,6 +10,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/units.h"
 #include "qapi/error.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
@@ -1640,6 +1641,7 @@ static void musicpal_init(MachineState *machine)
 /* Register flash */
 dinfo = drive_get(IF_PFLASH, 0, 0);
 if (dinfo) {
+static const size_t sector_size = 64 * KiB;
 BlockBackend *blk = blk_by_legacy_dinfo(dinfo);
 
 flash_size = blk_getlength(blk);
@@ -1649,17 +1651,30 @@ static void musicpal_init(MachineState *machine)
 exit(1);
 }
 
+dev = qdev_new(TYPE_PFLASH_CFI02);
+qdev_prop_set_drive(dev, "drive", blk);
+qdev_prop_set_uint32(dev, "num-blocks", flash_size / sector_size);
+qdev_prop_set_uint32(dev, "sector-length", sector_size);
+qdev_prop_set_uint8(dev, "width", 2); /* 16-bit */
+qdev_prop_set_uint8(dev, "mappings", MP_FLASH_SIZE_MAX / flash_size);
+qdev_prop_set_uint8(dev, "big-endian", 0);
+qdev_prop_set_uint16(dev, "id0", 0x00bf);
+qdev_prop_set_uint16(dev, "id1", 0x236d);
+qdev_prop_set_uint16(dev, "id2", 0x);
+qdev_prop_set_uint16(dev, "id3", 0x);
+qdev_prop_set_uint16(dev, "unlock-addr0", 0x);
+qdev_prop_set_uint16(dev, "unlock-addr1", 0x2aaa);
+qdev_prop_set_string(dev, "name", "musicpal.flash");
+sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), _fatal);
+
+sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0,
+0x1ULL - MP_FLASH_SIZE_MAX);
+
 /*
  * The original U-Boot accesses the flash at 0xFE00 instead of
  * 0xFF80 (if there is 8 MB flash). So remap flash access if the
  * image is smaller than 32 MB.
  */
-pflash_cfi02_register(0x1ULL - MP_FLASH_SIZE_MAX,
-  "musicpal.flash", flash_size,
-  blk, 0x1,
-  MP_FLASH_SIZE_MAX / flash_size,
-  2, 0x00BF, 0x236D, 0x, 0x,
-  0x, 0x2AAA, 0);
 }
 sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL);
 
-- 
2.26.3