hw/arm/aspeed: Remove AspeedSoCClass dependency from aspeed_soc_cpu_type() API
Refactor the aspeed_soc_cpu_type() helper to remove its dependency on AspeedSoCClass and make CPU type retrieval more generic. The function now takes valid_cpu_types as a const char * const * parameter instead of requiring a full AspeedSoCClass instance. All corresponding call sites in various Aspeed SoC initialization files (aspeed_ast10x0.c, aspeed_ast2400.c, aspeed_ast2600.c, aspeed_ast27x0.c, and related variants) are updated accordingly. This change simplifies the API, eliminates unnecessary type coupling, and improves code reusability across different SoC families. 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/20251013054334.955331-5-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
8f1ceec735
commit
bb3219345a
8 changed files with 15 additions and 13 deletions
|
|
@ -211,7 +211,8 @@ static void aspeed_soc_ast1030_realize(DeviceState *dev_soc, Error **errp)
|
|||
/* AST1030 CPU Core */
|
||||
armv7m = DEVICE(&a->armv7m);
|
||||
qdev_prop_set_uint32(armv7m, "num-irq", 256);
|
||||
qdev_prop_set_string(armv7m, "cpu-type", aspeed_soc_cpu_type(sc));
|
||||
qdev_prop_set_string(armv7m, "cpu-type",
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
qdev_connect_clock_in(armv7m, "cpuclk", s->sysclk);
|
||||
object_property_set_link(OBJECT(&a->armv7m), "memory",
|
||||
OBJECT(s->memory), &error_abort);
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ static void aspeed_ast2400_soc_init(Object *obj)
|
|||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", &a->cpu[i],
|
||||
aspeed_soc_cpu_type(sc));
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.scu-%s", socname);
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ static void aspeed_soc_ast2600_init(Object *obj)
|
|||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", &a->cpu[i],
|
||||
aspeed_soc_cpu_type(sc));
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
}
|
||||
|
||||
snprintf(typename, sizeof(typename), "aspeed.scu-%s", socname);
|
||||
|
|
|
|||
|
|
@ -174,7 +174,8 @@ static void aspeed_soc_ast27x0ssp_realize(DeviceState *dev_soc, Error **errp)
|
|||
/* AST27X0 SSP Core */
|
||||
armv7m = DEVICE(&a->armv7m);
|
||||
qdev_prop_set_uint32(armv7m, "num-irq", 256);
|
||||
qdev_prop_set_string(armv7m, "cpu-type", aspeed_soc_cpu_type(sc));
|
||||
qdev_prop_set_string(armv7m, "cpu-type",
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
qdev_connect_clock_in(armv7m, "cpuclk", s->sysclk);
|
||||
object_property_set_link(OBJECT(&a->armv7m), "memory",
|
||||
OBJECT(s->memory), &error_abort);
|
||||
|
|
|
|||
|
|
@ -174,7 +174,8 @@ static void aspeed_soc_ast27x0tsp_realize(DeviceState *dev_soc, Error **errp)
|
|||
/* AST27X0 TSP Core */
|
||||
armv7m = DEVICE(&a->armv7m);
|
||||
qdev_prop_set_uint32(armv7m, "num-irq", 256);
|
||||
qdev_prop_set_string(armv7m, "cpu-type", aspeed_soc_cpu_type(sc));
|
||||
qdev_prop_set_string(armv7m, "cpu-type",
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
qdev_connect_clock_in(armv7m, "cpuclk", s->sysclk);
|
||||
object_property_set_link(OBJECT(&a->armv7m), "memory",
|
||||
OBJECT(s->memory), &error_abort);
|
||||
|
|
|
|||
|
|
@ -436,7 +436,7 @@ static void aspeed_soc_ast2700_init(Object *obj)
|
|||
|
||||
for (i = 0; i < sc->num_cpus; i++) {
|
||||
object_initialize_child(obj, "cpu[*]", &a->cpu[i],
|
||||
aspeed_soc_cpu_type(sc));
|
||||
aspeed_soc_cpu_type(sc->valid_cpu_types));
|
||||
}
|
||||
|
||||
object_initialize_child(obj, "gic", &a->gic, gicv3_class_name());
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@
|
|||
#include "qemu/datadir.h"
|
||||
|
||||
|
||||
const char *aspeed_soc_cpu_type(AspeedSoCClass *sc)
|
||||
const char *aspeed_soc_cpu_type(const char * const *valid_cpu_types)
|
||||
{
|
||||
assert(sc->valid_cpu_types);
|
||||
assert(sc->valid_cpu_types[0]);
|
||||
assert(!sc->valid_cpu_types[1]);
|
||||
return sc->valid_cpu_types[0];
|
||||
assert(valid_cpu_types);
|
||||
assert(valid_cpu_types[0]);
|
||||
assert(!valid_cpu_types[1]);
|
||||
return valid_cpu_types[0];
|
||||
}
|
||||
|
||||
qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev)
|
||||
|
|
|
|||
|
|
@ -202,8 +202,6 @@ struct AspeedSoCClass {
|
|||
bool (*boot_from_emmc)(AspeedSoCState *s);
|
||||
};
|
||||
|
||||
const char *aspeed_soc_cpu_type(AspeedSoCClass *sc);
|
||||
|
||||
enum {
|
||||
ASPEED_DEV_VBOOTROM,
|
||||
ASPEED_DEV_SPI_BOOT,
|
||||
|
|
@ -304,6 +302,7 @@ enum {
|
|||
ASPEED_DEV_IPC1,
|
||||
};
|
||||
|
||||
const char *aspeed_soc_cpu_type(const char * const *valid_cpu_types);
|
||||
qemu_irq aspeed_soc_get_irq(AspeedSoCState *s, int dev);
|
||||
bool aspeed_soc_uart_realize(AspeedSoCState *s, Error **errp);
|
||||
void aspeed_soc_uart_set_chr(SerialMM *uart, int dev, int uarts_base,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue