[PATCH v2] hw/riscv/k230: add k230_sram_create() helper function

Jian Cai posted 1 patch 4 days, 3 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260721060409.9688-2-lingqian._5Fgi@163.com
Maintainers: Chao Liu <chao.liu@processmission.com>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
docs/system/riscv/k230.rst |  3 ++-
hw/riscv/k230.c            | 14 ++++++++++----
2 files changed, 12 insertions(+), 5 deletions(-)
[PATCH v2] hw/riscv/k230: add k230_sram_create() helper function
Posted by Jian Cai 4 days, 3 hours ago
The K230 shared SRAM (2 MB at 0x80200000) has no software-visible
controller registers: it is a pure on-chip RAM block accessed via
the AXI bus.  Replace the inline memory_region_init_ram calls in
k230_soc_realize() with a static k230_sram_create() helper, which
follows the same pattern as the existing k230_create_plic() and
k230_create_uart() helpers.

Also fix two non-ASCII characters (registered sign and em-dash)
in k230.rst that would cause git send-email to reject the patch
as 8-bit.

Reference:
K230 TRM V0.3.1 (2024-11-18), Section 5.2 Sram
https://github.com/revyos/external-docs/blob/master/K230/en-us/
K230_Technical_Reference_Manual_V0.3.1_20241118.pdf

Signed-off-by: Jian Cai <lingqian_gi@163.com>
---

Changes in v2:
- Dropped SysBusDevice model per Chao Liu's review; use a static helper
  function k230_sram_create() in k230.c instead.
- Removed k230_sram.c, k230_sram.h, and k230-sram-test.c.
- Fixed two non-ASCII characters (registered sign, em-dash) in k230.rst.
- Removed SRAM entries from MAINTAINERS (no new files added).
- v1: [RFC PATCH 0/3] hw/riscv: add K230 SRAM device model
  https://lore.kernel.org/qemu-devel/

 docs/system/riscv/k230.rst |  3 ++-
 hw/riscv/k230.c            | 14 ++++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/docs/system/riscv/k230.rst b/docs/system/riscv/k230.rst
index cea8202e55..18eb6806f6 100644
--- a/docs/system/riscv/k230.rst
+++ b/docs/system/riscv/k230.rst
@@ -2,7 +2,7 @@ Kendryte K230 virt reference platform (``k230``)
 ==========================================================================
 The ``k230`` machine is compatible with the Kendryte K230 SDK.
 
-The K230 is a chip from the AIoT SoC series made by Kendryte ® — a part of
+The K230 is a chip from the AIoT SoC series made by Kendryte (R) -- a part of
 Canaan Inc. It uses a brand-new multi-heterogeneous unit accelerated computing
 structure.
 
@@ -111,3 +111,4 @@ this machine does not emulate those controllers yet. Replace ``${INITRD_END}``
 with the host-calculated value above when typing the command. ``cma=0`` avoids
 the SDK kernel reserving too much of the little-core memory window for initramfs
 boot.
+
diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c
index 656f28190c..96add64c2a 100644
--- a/hw/riscv/k230.c
+++ b/hw/riscv/k230.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/units.h"
 #include "cpu-qom.h"
 #include "qemu/cutils.h"
 #include "qemu/error-report.h"
@@ -151,6 +152,14 @@ static void k230_create_uart(MemoryRegion *sys_mem, DeviceState *plic,
                    399193, serial_hd(index), DEVICE_LITTLE_ENDIAN);
 }
 
+static void k230_sram_create(K230SoCState *s)
+{
+    memory_region_init_ram(&s->sram, OBJECT(s), "k230.sram",
+                           memmap[K230_DEV_SRAM].size, &error_fatal);
+    memory_region_add_subregion(get_system_memory(),
+                                memmap[K230_DEV_SRAM].base, &s->sram);
+}
+
 static void k230_soc_realize(DeviceState *dev, Error **errp)
 {
     K230SoCState *s = RISCV_K230_SOC(dev);
@@ -162,10 +171,7 @@ static void k230_soc_realize(DeviceState *dev, Error **errp)
     c908_cpus = s->c908_cpu.num_harts;
 
     /* SRAM */
-    memory_region_init_ram(&s->sram, OBJECT(dev), "sram",
-                           memmap[K230_DEV_SRAM].size, &error_fatal);
-    memory_region_add_subregion(sys_mem, memmap[K230_DEV_SRAM].base,
-                                &s->sram);
+    k230_sram_create(s);
 
     /* BootROM */
     memory_region_init_rom(&s->bootrom, OBJECT(dev), "bootrom",
-- 
2.43.0