Hi,

On 10/5/25 06:20, jc...@duck.com wrote:
This patch implements the Global Control Register for the MAX78000 SOC

Signed-off-by: Jackson Donaldson <jc...@duck.com>
---
  hw/arm/Kconfig                 |   1 +
  hw/arm/max78000_soc.c          |   9 +-
  hw/misc/Kconfig                |   3 +
  hw/misc/max78000_gcr.c         | 285 +++++++++++++++++++++++++++++++++
  hw/misc/meson.build            |   1 +
  include/hw/arm/max78000_soc.h  |   2 +
  include/hw/misc/max78000_gcr.h | 122 ++++++++++++++
  7 files changed, 422 insertions(+), 1 deletion(-)
  create mode 100644 hw/misc/max78000_gcr.c
  create mode 100644 include/hw/misc/max78000_gcr.h


diff --git a/hw/arm/max78000_soc.c b/hw/arm/max78000_soc.c
index 6334d8b49b..7a012c6ef7 100644
--- a/hw/arm/max78000_soc.c
+++ b/hw/arm/max78000_soc.c
@@ -29,6 +29,8 @@ static void max78000_soc_initfn(Object *obj)
object_initialize_child(obj, "armv7m", &s->armv7m, TYPE_ARMV7M); + object_initialize_child(obj, "gcr", &s->gcr, TYPE_MAX78000_GCR);
+
      for (i = 0; i < MAX78000_NUM_ICC; i++) {
          object_initialize_child(obj, "icc[*]", &s->icc[i], TYPE_MAX78000_ICC);
      }
@@ -104,6 +106,10 @@ static void max78000_soc_realize(DeviceState *dev_soc, 
Error **errp)
          return;
      }
+ dev = DEVICE(&s->gcr);
+    sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp);
+    sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x40000000);
+
      for (i = 0; i < MAX78000_NUM_ICC; i++) {
          dev = DEVICE(&(s->icc[i]));
          sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), errp);
@@ -116,6 +122,8 @@ static void max78000_soc_realize(DeviceState *dev_soc, 
Error **errp)
          if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) {
              return;
          }
+        dev->id = g_strdup_printf("uart%d", i);

This line belongs to the previous patch (UART implementation).

          busdev = SYS_BUS_DEVICE(dev);
          sysbus_mmio_map(busdev, 0, max78000_uart_addr[i]);
          sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(armv7m,
@@ -123,7 +131,6 @@ static void max78000_soc_realize(DeviceState *dev_soc, 
Error **errp)


Reply via email to