@samitouri / QOSamiQemu / commits / 69ba4d5b96

hw/arm/aspeed: Use Aspeed2700SCUState for AST2700 users

Now that Aspeed2700SCUState has been introduced, update the AST1700 and AST27x0 SoCs to instantiate the AST2700-specific SCU subclass instead of the generic AspeedSCUState. Also update the AST27x0 FC board to link the SSP/TSP coprocessors to the AST2700 SCU instance. This prepares the AST2700 platform for subsequent patches that move AST2700-specific SCU functionality into the subclass. No functional change. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Link: https://lore.kernel.org/qemu-devel/20260717084559.3477061-3-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>

Jamin Lin committed Jul 17, 2026 at 08:46 UTC 69ba4d5b967cbc7995ac30775fdf4bc1e7350788
4 files changed +12 -11
hw/arm/aspeed_ast27x0-fc.c
+2 -2
@@ -158,7 +158,7 @@ static bool ast2700fc_ssp_init(MachineState *machine, Error **errp)
158 object_property_set_link(OBJECT(&s->ssp), "sram",
159 OBJECT(&psp->sram), &error_abort);
160 object_property_set_link(OBJECT(&s->ssp), "scu",
161 - OBJECT(&psp->scu), &error_abort);
161 + OBJECT(&s->ca35.scu), &error_abort);
162 if (!qdev_realize(DEVICE(&s->ssp), NULL, errp)) {
163 return false;
164 }
@@ -190,7 +190,7 @@ static bool ast2700fc_tsp_init(MachineState *machine, Error **errp)
190 object_property_set_link(OBJECT(&s->tsp), "sram",
191 OBJECT(&psp->sram), &error_abort);
192 object_property_set_link(OBJECT(&s->tsp), "scu",
193 - OBJECT(&psp->scu), &error_abort);
193 + OBJECT(&s->ca35.scu), &error_abort);
194 if (!qdev_realize(DEVICE(&s->tsp), NULL, errp)) {
195 return false;
196 }
hw/arm/aspeed_ast27x0.c
+8 -8
@@ -435,12 +435,12 @@ static void aspeed_soc_ast2700_init(Object *obj)
435
436 object_initialize_child(obj, "gic", &a->gic, gicv3_class_name());
437
438 - object_initialize_child(obj, "scu", &s->scu, TYPE_ASPEED_2700_SCU);
439 - qdev_prop_set_uint32(DEVICE(&s->scu), "silicon-rev",
438 + object_initialize_child(obj, "scu", &a->scu, TYPE_ASPEED_2700_SCU);
439 + qdev_prop_set_uint32(DEVICE(&a->scu), "silicon-rev",
440 sc->silicon_rev);
441 - object_property_add_alias(obj, "hw-strap1", OBJECT(&s->scu),
441 + object_property_add_alias(obj, "hw-strap1", OBJECT(&a->scu),
442 "hw-strap1");
443 - object_property_add_alias(obj, "hw-prot-key", OBJECT(&s->scu),
443 + object_property_add_alias(obj, "hw-prot-key", OBJECT(&a->scu),
444 "hw-prot-key");
445
446 object_initialize_child(obj, "scuio", &s->scuio, TYPE_ASPEED_2700_SCUIO);
@@ -808,10 +808,10 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
808 sc->memmap[ASPEED_DEV_VBOOTROM], &s->vbootrom);
809
810 /* SCU */
811 - if (!sysbus_realize(SYS_BUS_DEVICE(&s->scu), errp)) {
811 + if (!sysbus_realize(SYS_BUS_DEVICE(&a->scu), errp)) {
812 return;
813 }
814 - aspeed_mmio_map(s->memory, SYS_BUS_DEVICE(&s->scu), 0,
814 + aspeed_mmio_map(s->memory, SYS_BUS_DEVICE(&a->scu), 0,
815 sc->memmap[ASPEED_DEV_SCU]);
816
817 /* SCU1 */
@@ -934,7 +934,7 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
934 AspeedWDTClass *awc = ASPEED_WDT_GET_CLASS(&s->wdt[i]);
935 hwaddr wdt_offset = sc->memmap[ASPEED_DEV_WDT] + i * awc->iosize;
936
937 - object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&s->scu),
937 + object_property_set_link(OBJECT(&s->wdt[i]), "scu", OBJECT(&a->scu),
938 &error_abort);
939 if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) {
940 return;
@@ -1037,7 +1037,7 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
1037 aspeed_soc_ast2700_get_irq(s, ASPEED_DEV_EMMC));
1038
1039 /* Timer */
1040 - object_property_set_link(OBJECT(&s->timerctrl), "scu", OBJECT(&s->scu),
1040 + object_property_set_link(OBJECT(&s->timerctrl), "scu", OBJECT(&a->scu),
1041 &error_abort);
1042 if (!sysbus_realize(SYS_BUS_DEVICE(&s->timerctrl), errp)) {
1043 return;
include/hw/arm/aspeed_ast1700.h
+1 -1
@@ -41,7 +41,7 @@ struct AspeedAST1700SoCState {
41 MemoryRegion sram;
42 AspeedSMCState spi;
43 AspeedADCState adc;
44 - AspeedSCUState scu;
44 + Aspeed2700SCUState scu;
45 AspeedGPIOState gpio;
46 AspeedSGPIOState sgpiom[AST1700_SGPIO_NUM];
47 AspeedI2CState i2c;
include/hw/arm/aspeed_soc.h
+1
@@ -151,6 +151,7 @@ struct Aspeed27x0SoCState {
151 AspeedINTCState intcioexp[ASPEED_IOEXP_NUM];
152 GICv3State gic;
153 MemoryRegion dram_empty;
154 + Aspeed2700SCUState scu;
155 };
156
157 #define TYPE_ASPEED27X0_SOC "aspeed27x0-soc"