@samitouri / QOSamiQemu / commits / 43eaa304c1

hw/arm/aspeed: Convert SRAM size definition to array type

Prepare the Aspeed SoC model for future platforms that may contain multiple SRAM regions with different sizes and MMIO mappings. The current implementation stores SRAM size information in a single sram_size field, which limits extensibility when additional SRAM instances are introduced. Convert sram_size into an array-based definition and update all existing users to reference sram_size[0]. This aligns with the previous SRAM MemoryRegion array conversion and provides a scalable foundation for supporting multiple SRAM regions in future SoCs. No functional change. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Link: https://lore.kernel.org/qemu-devel/20260525053036.3305181-3-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>

Jamin Lin committed May 25, 2026 at 05:30 UTC 43eaa304c16d1ebb1280088cfae1e6037d77f41e
5 files changed +14 -14
hw/arm/aspeed_ast10x0.c
+4 -4
@@ -240,8 +240,8 @@ static bool aspeed_soc_ast10x0_realize(Aspeed10x0SoCState *a, Error **errp)
240 /* Internal SRAM */
241 sram_name = g_strdup_printf("aspeed.sram.%d",
242 CPU(a->armv7m.cpu)->cpu_index);
243 - memory_region_init_ram(&s->sram[0], OBJECT(s), sram_name, sc->sram_size,
244 - &err);
243 + memory_region_init_ram(&s->sram[0], OBJECT(s), sram_name,
244 + sc->sram_size[0], &err);
245 if (err != NULL) {
246 error_propagate(errp, err);
247 return false;
@@ -493,7 +493,7 @@ static void aspeed_soc_ast1030_class_init(ObjectClass *klass, const void *data)
493
494 sc->valid_cpu_types = valid_cpu_types;
495 sc->silicon_rev = AST1030_A1_SILICON_REV;
496 - sc->sram_size = 0xc0000;
496 + sc->sram_size[0] = 0xc0000;
497 sc->secsram_size = 0x40000; /* 256 * KiB */
498 sc->spis_num = 2;
499 sc->ehcis_num = 0;
@@ -521,7 +521,7 @@ static void aspeed_soc_ast1060_class_init(ObjectClass *klass, const void *data)
521
522 sc->valid_cpu_types = valid_cpu_types;
523 sc->silicon_rev = AST1060_A2_SILICON_REV;
524 - sc->sram_size = 0xc0000;
524 + sc->sram_size[0] = 0xc0000;
525 sc->secsram_size = 0x40000; /* 256 * KiB */
526 sc->spis_num = 2;
527 sc->wdts_num = 4;
hw/arm/aspeed_ast2400.c
+3 -3
@@ -282,7 +282,7 @@ static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
282 /* SRAM */
283 sram_name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
284 if (!memory_region_init_ram(&s->sram[0], OBJECT(s), sram_name,
285 - sc->sram_size, errp)) {
285 + sc->sram_size[0], errp)) {
286 return;
287 }
288 memory_region_add_subregion(s->memory,
@@ -533,7 +533,7 @@ static void aspeed_soc_ast2400_class_init(ObjectClass *oc, const void *data)
533
534 sc->valid_cpu_types = valid_cpu_types;
535 sc->silicon_rev = AST2400_A1_SILICON_REV;
536 - sc->sram_size = 0x8000;
536 + sc->sram_size[0] = 0x8000;
537 sc->spis_num = 1;
538 sc->ehcis_num = 1;
539 sc->wdts_num = 2;
@@ -560,7 +560,7 @@ static void aspeed_soc_ast2500_class_init(ObjectClass *oc, const void *data)
560
561 sc->valid_cpu_types = valid_cpu_types;
562 sc->silicon_rev = AST2500_A1_SILICON_REV;
563 - sc->sram_size = 0x9000;
563 + sc->sram_size[0] = 0x9000;
564 sc->spis_num = 2;
565 sc->ehcis_num = 2;
566 sc->wdts_num = 3;
hw/arm/aspeed_ast2600.c
+2 -2
@@ -438,7 +438,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
438 /* SRAM */
439 sram_name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
440 if (!memory_region_init_ram(&s->sram[0], OBJECT(s), sram_name,
441 - sc->sram_size, errp)) {
441 + sc->sram_size[0], errp)) {
442 return;
443 }
444 memory_region_add_subregion(s->memory,
@@ -764,7 +764,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, const void *data)
764
765 sc->valid_cpu_types = valid_cpu_types;
766 sc->silicon_rev = AST2600_A3_SILICON_REV;
767 - sc->sram_size = 0x16400;
767 + sc->sram_size[0] = 0x16400;
768 sc->spis_num = 2;
769 sc->ehcis_num = 2;
770 sc->wdts_num = 4;
hw/arm/aspeed_ast27x0.c
+4 -4
@@ -778,8 +778,8 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
778
779 /* SRAM */
780 name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
781 - if (!memory_region_init_ram(&s->sram[0], OBJECT(s), name, sc->sram_size,
782 - errp)) {
781 + if (!memory_region_init_ram(&s->sram[0], OBJECT(s), name,
782 + sc->sram_size[0], errp)) {
783 return;
784 }
785 memory_region_add_subregion(s->memory,
@@ -1151,7 +1151,7 @@ static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, const void *data)
1151
1152 sc->valid_cpu_types = valid_cpu_types;
1153 sc->silicon_rev = AST2700_A1_SILICON_REV;
1154 - sc->sram_size = 0x20000;
1154 + sc->sram_size[0] = 0x20000;
1155 sc->pcie_num = 3;
1156 sc->spis_num = 3;
1157 sc->sgpio_num = 2;
@@ -1181,7 +1181,7 @@ static void aspeed_soc_ast2700a2_class_init(ObjectClass *oc, const void *data)
1181
1182 sc->valid_cpu_types = valid_cpu_types;
1183 sc->silicon_rev = AST2700_A2_SILICON_REV;
1184 - sc->sram_size = 0x20000;
1184 + sc->sram_size[0] = 0x20000;
1185 sc->pcie_num = 3;
1186 sc->spis_num = 3;
1187 sc->sgpio_num = 2;
include/hw/arm/aspeed_soc.h
+1 -1
@@ -172,7 +172,7 @@ struct AspeedSoCClass {
172 /** valid_cpu_types: NULL terminated array of a single CPU type. */
173 const char * const *valid_cpu_types;
174 uint32_t silicon_rev;
175 - uint64_t sram_size;
175 + uint64_t sram_size[ASPEED_SRAM_NUM];
176 uint64_t secsram_size;
177 int pcie_num;
178 int spis_num;