diff options
| author | Luc Michel <luc.michel@amd.com> | 2025-09-26 09:07:45 +0200 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2025-10-07 10:35:36 +0100 |
| commit | cf8f12b6e719dca00e015febb5d5bbb1f3d6aa7f (patch) | |
| tree | 56d5966ca4957143db2f4db7d7a4bd07caf040b3 /hw/arm/xlnx-versal.c | |
| parent | 805bdea08a17db38f0d860f9acad2eb3cf8e6fb5 (diff) | |
| download | focaccia-qemu-cf8f12b6e719dca00e015febb5d5bbb1f3d6aa7f.tar.gz focaccia-qemu-cf8f12b6e719dca00e015febb5d5bbb1f3d6aa7f.zip | |
hw/arm/xlnx-versal: ocm: refactor creation
Refactor the OCM creation using the VersalMap structure. Signed-off-by: Luc Michel <luc.michel@amd.com> Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20250926070806.292065-28-luc.michel@amd.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/xlnx-versal.c')
| -rw-r--r-- | hw/arm/xlnx-versal.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index e89c66313c..8aa82ceb83 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -73,6 +73,11 @@ typedef struct VersalSimplePeriphMap { int irq; } VersalSimplePeriphMap; +typedef struct VersalMemMap { + uint64_t addr; + uint64_t size; +} VersalMemMap; + typedef struct VersalGicMap { int version; uint64_t dist; @@ -108,6 +113,8 @@ typedef struct VersalCpuClusterMap { } VersalCpuClusterMap; typedef struct VersalMap { + VersalMemMap ocm; + VersalCpuClusterMap apu; VersalCpuClusterMap rpu; @@ -207,6 +214,11 @@ typedef struct VersalMap { } VersalMap; static const VersalMap VERSAL_MAP = { + .ocm = { + .addr = 0xfffc0000, + .size = 0x40000, + }, + .apu = { .name = "apu", .cpu_model = ARM_CPU_TYPE_NAME("cortex-a72"), @@ -1608,6 +1620,7 @@ static void versal_realize(DeviceState *dev, Error **errp) { Versal *s = XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; + MemoryRegion *ocm; Object *container; const VersalMap *map = versal_get_map(s); size_t i; @@ -1683,10 +1696,9 @@ static void versal_realize(DeviceState *dev, Error **errp) versal_unimp(s); /* Create the On Chip Memory (OCM). */ - memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", - MM_OCM_SIZE, &error_fatal); - - memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm, 0); + ocm = g_new(MemoryRegion, 1); + memory_region_init_ram(ocm, OBJECT(s), "ocm", map->ocm.size, &error_fatal); + memory_region_add_subregion_overlap(&s->mr_ps, map->ocm.addr, ocm, 0); } DeviceState *versal_get_boot_cpu(Versal *s) |