From: Jamin Lin <[email protected]> Before this change, each unimplemented device needed its own field in AspeedSoCState. This made the variable names confusing. For example, AspeedSoCState has "udc" as an unimplemented device, but Aspeed2600SoCState also has "udc" as the real UDC model.
Use the unimp_devs table in AspeedSoCClass to describe the unimplemented devices, and use create_unimplemented_devices() to create and map them. This makes the code easier to maintain and read. Convert AST2600 to use them. No functional change. Signed-off-by: Jamin Lin <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Cédric Le Goater <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] Signed-off-by: Cédric Le Goater <[email protected]> --- hw/arm/aspeed_ast2600.c | 44 +++++++++++------------------------------ 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/hw/arm/aspeed_ast2600.c b/hw/arm/aspeed_ast2600.c index 1a10d0fe1ecc..ebaf07d3128a 100644 --- a/hw/arm/aspeed_ast2600.c +++ b/hw/arm/aspeed_ast2600.c @@ -19,9 +19,6 @@ #include "system/system.h" #include "target/arm/cpu-qom.h" -#define ASPEED_SOC_IOMEM_SIZE 0x00200000 -#define ASPEED_SOC_DPMCU_SIZE 0x00040000 - static const hwaddr aspeed_soc_ast2600_memmap[] = { [ASPEED_DEV_SPI_BOOT] = 0x00000000, [ASPEED_DEV_SRAM0] = 0x10000000, @@ -149,6 +146,15 @@ static const int aspeed_soc_ast2600_irqmap[] = { [ASPEED_DEV_ACRY] = 160, }; +static const UnimplementedDeviceConfig aspeed_soc_ast2600_unimp_devs[] = { + { "iomem", "aspeed.io", 0x1E600000, 0x00200000, -1000 }, + { "video", "aspeed.video", 0x1E700000, 0x1000, -1000 }, + { "dpmcu", "aspeed.dpmcu", 0x18000000, 0x00040000, -1000 }, + { "emmc-boot-controller", "aspeed.emmc-boot-controller", + 0x1E6F5000, 0x1000, -1000 }, + { } +}; + static qemu_irq aspeed_soc_ast2600_get_irq(AspeedSoCState *s, int dev) { Aspeed2600SoCState *a = ASPEED2600_SOC(s); @@ -282,13 +288,6 @@ static void aspeed_soc_ast2600_init(Object *obj) object_initialize_child(obj, "sbc", &s->sbc, TYPE_ASPEED_AST2600_SBC); - object_initialize_child(obj, "iomem", &s->iomem, TYPE_UNIMPLEMENTED_DEVICE); - object_initialize_child(obj, "video", &s->video, TYPE_UNIMPLEMENTED_DEVICE); - object_initialize_child(obj, "dpmcu", &s->dpmcu, TYPE_UNIMPLEMENTED_DEVICE); - object_initialize_child(obj, "emmc-boot-controller", - &s->emmc_boot_controller, - TYPE_UNIMPLEMENTED_DEVICE); - for (i = 0; i < ASPEED_FSI_NUM; i++) { object_initialize_child(obj, "fsi[*]", &s->fsi[i], TYPE_ASPEED_APB2OPB); } @@ -382,22 +381,8 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(s->memory, sc->memmap[ASPEED_DEV_SPI_BOOT], &s->spi_boot_container); - /* IO space */ - aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->iomem), - "aspeed.io", - sc->memmap[ASPEED_DEV_IOMEM], - ASPEED_SOC_IOMEM_SIZE); - - /* Video engine stub */ - aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->video), - "aspeed.video", - sc->memmap[ASPEED_DEV_VIDEO], 0x1000); - - /* eMMC Boot Controller stub */ - aspeed_mmio_map_unimplemented(s->memory, - SYS_BUS_DEVICE(&s->emmc_boot_controller), - "aspeed.emmc-boot-controller", - sc->memmap[ASPEED_DEV_EMMC_BC], 0x1000); + /* Unimplemented devices */ + create_unimplemented_devices(OBJECT(s), s->memory, sc->unimp_devs); /* CPU */ for (i = 0; i < sc->num_cpus; i++) { @@ -469,12 +454,6 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(s->memory, sc->memmap[ASPEED_DEV_SRAM1], &s->sram_container[1]); - /* DPMCU */ - aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->dpmcu), - "aspeed.dpmcu", - sc->memmap[ASPEED_DEV_DPMCU], - ASPEED_SOC_DPMCU_SIZE); - /* SCU */ if (!sysbus_realize(SYS_BUS_DEVICE(&s->scu), errp)) { return; @@ -838,6 +817,7 @@ static void aspeed_soc_ast2600_class_init(ObjectClass *oc, const void *data) sc->uarts_base = ASPEED_DEV_UART1; sc->irqmap = aspeed_soc_ast2600_irqmap; sc->memmap = aspeed_soc_ast2600_memmap; + sc->unimp_devs = aspeed_soc_ast2600_unimp_devs; sc->num_cpus = 2; sc->boot_from_emmc = aspeed_soc_ast2600_boot_from_emmc; } -- 2.56.0
