qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC memory


From: Cédric Le Goater
Subject: Re: [PATCH 2/5] aspeed: ast27x0: Map unimplemented devices in SoC memory
Date: Fri, 27 Dec 2024 10:53:23 +0100
User-agent: Mozilla Thunderbird

Hello,

On 12/25/24 03:03, Steven Lee wrote:
Maps following unimplemented devices in SoC memory
- dpmcu
- iomem0
- iomem1
- ltpi
- io

Could you please add a sentence about what these devices are ?

Thanks,

C.


Signed-off-by: Steven Lee <steven_lee@aspeedtech.com>
---
  hw/arm/aspeed_ast27x0.c     | 45 +++++++++++++++++++++++++++++++------
  include/hw/arm/aspeed_soc.h |  6 +++++
  2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
index fee3755837..fd09872403 100644
--- a/hw/arm/aspeed_ast27x0.c
+++ b/hw/arm/aspeed_ast27x0.c
@@ -23,11 +23,19 @@
  #include "qapi/qmp/qlist.h"
  #include "qemu/log.h"
+#define AST2700_SOC_IO_SIZE 0x04000000
+#define AST2700_SOC_IOMEM_SIZE       0x01000000
+#define AST2700_SOC_DPMCU_SIZE       0x00040000
+#define AST2700_SOC_LTPI_SIZE        0x01000000
+
  static const hwaddr aspeed_soc_ast2700_memmap[] = {
      [ASPEED_DEV_SPI_BOOT]  =  0x400000000,
+    [ASPEED_DEV_IOMEM]     =  0x00000000,
      [ASPEED_DEV_SRAM]      =  0x10000000,
+    [ASPEED_DEV_IOMEM0]    =  0x12000000,
      [ASPEED_DEV_SDMC]      =  0x12C00000,
      [ASPEED_DEV_SCU]       =  0x12C02000,
+    [ASPEED_DEV_IOMEM1]    =  0x14000000,
      [ASPEED_DEV_SCUIO]     =  0x14C02000,
      [ASPEED_DEV_UART0]     =  0X14C33000,
      [ASPEED_DEV_UART1]     =  0X14C33100,
@@ -66,6 +74,7 @@ static const hwaddr aspeed_soc_ast2700_memmap[] = {
      [ASPEED_DEV_GPIO]      =  0x14C0B000,
      [ASPEED_DEV_RTC]       =  0x12C0F000,
      [ASPEED_DEV_SDHCI]     =  0x14080000,
+    [ASPEED_DEV_LTPI]      =  0x30000000,
  };
#define AST2700_MAX_IRQ 256
@@ -397,6 +406,14 @@ static void aspeed_soc_ast2700_init(Object *obj)
object_initialize_child(obj, "emmc-controller.sdhci", &s->emmc.slots[0],
                              TYPE_SYSBUS_SDHCI);
+
+    object_initialize_child(obj, "dpmcu", &s->dpmcu, 
TYPE_UNIMPLEMENTED_DEVICE);
+    object_initialize_child(obj, "ltpi", &s->ltpi, TYPE_UNIMPLEMENTED_DEVICE);
+    object_initialize_child(obj, "io", &s->iomem, TYPE_UNIMPLEMENTED_DEVICE);
+    object_initialize_child(obj, "iomem0", &s->iomem0,
+            TYPE_UNIMPLEMENTED_DEVICE);
+    object_initialize_child(obj, "iomem1", &s->iomem1,
+            TYPE_UNIMPLEMENTED_DEVICE);
  }
/*
@@ -432,8 +449,10 @@ static bool aspeed_soc_ast2700_gic_realize(DeviceState 
*dev, Error **errp)
      if (!sysbus_realize(gicbusdev, errp)) {
          return false;
      }
-    sysbus_mmio_map(gicbusdev, 0, sc->memmap[ASPEED_GIC_DIST]);
-    sysbus_mmio_map(gicbusdev, 1, sc->memmap[ASPEED_GIC_REDIST]);
+    aspeed_mmio_map(s, SYS_BUS_DEVICE(&a->gic), 0,
+                    sc->memmap[ASPEED_GIC_DIST]);
+    aspeed_mmio_map(s, SYS_BUS_DEVICE(&a->gic), 1,
+                    sc->memmap[ASPEED_GIC_REDIST]);
for (i = 0; i < sc->num_cpus; i++) {
          DeviceState *cpudev = DEVICE(&a->cpu[i]);
@@ -716,11 +735,23 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, 
Error **errp)
      sysbus_connect_irq(SYS_BUS_DEVICE(&s->emmc), 0,
                         aspeed_soc_get_irq(s, ASPEED_DEV_EMMC));
- create_unimplemented_device("ast2700.dpmcu", 0x11000000, 0x40000);
-    create_unimplemented_device("ast2700.iomem0", 0x12000000, 0x01000000);
-    create_unimplemented_device("ast2700.iomem1", 0x14000000, 0x01000000);
-    create_unimplemented_device("ast2700.ltpi", 0x30000000, 0x1000000);
-    create_unimplemented_device("ast2700.io", 0x0, 0x4000000);
+    aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->dpmcu), "aspeed.dpmcu",
+                                  sc->memmap[ASPEED_DEV_DPMCU],
+                                  AST2700_SOC_DPMCU_SIZE);
+    aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->ltpi), "aspeed.ltpi",
+                                  sc->memmap[ASPEED_DEV_LTPI],
+                                  AST2700_SOC_LTPI_SIZE);
+    aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem), "aspeed.io",
+                                  sc->memmap[ASPEED_DEV_IOMEM],
+                                  AST2700_SOC_IO_SIZE);
+    aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem0),
+                                  "aspeed.iomem0",
+                                  sc->memmap[ASPEED_DEV_IOMEM0],
+                                  AST2700_SOC_IOMEM_SIZE);
+    aspeed_mmio_map_unimplemented(s, SYS_BUS_DEVICE(&s->iomem1),
+                                  "aspeed.iomem1",
+                                  sc->memmap[ASPEED_DEV_IOMEM1],
+                                  AST2700_SOC_IOMEM_SIZE);
  }
static void aspeed_soc_ast2700_class_init(ObjectClass *oc, void *data)
diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
index 689f52dae8..bf885da3fc 100644
--- a/include/hw/arm/aspeed_soc.h
+++ b/include/hw/arm/aspeed_soc.h
@@ -90,6 +90,8 @@ struct AspeedSoCState {
      SerialMM uart[ASPEED_UARTS_NUM];
      Clock *sysclk;
      UnimplementedDeviceState iomem;
+    UnimplementedDeviceState iomem0;
+    UnimplementedDeviceState iomem1;
      UnimplementedDeviceState video;
      UnimplementedDeviceState emmc_boot_controller;
      UnimplementedDeviceState dpmcu;
@@ -97,6 +99,7 @@ struct AspeedSoCState {
      UnimplementedDeviceState espi;
      UnimplementedDeviceState udc;
      UnimplementedDeviceState sgpiom;
+    UnimplementedDeviceState ltpi;
      UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
      AspeedAPB2OPBState fsi[2];
  };
@@ -172,6 +175,9 @@ const char *aspeed_soc_cpu_type(AspeedSoCClass *sc);
  enum {
      ASPEED_DEV_SPI_BOOT,
      ASPEED_DEV_IOMEM,
+    ASPEED_DEV_IOMEM0,
+    ASPEED_DEV_IOMEM1,
+    ASPEED_DEV_LTPI,
      ASPEED_DEV_UART0,
      ASPEED_DEV_UART1,
      ASPEED_DEV_UART2,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]