From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "philmd@oss.qualcomm.com" <philmd@oss.qualcomm.com>,
"Cédric Le Goater" <clg@kaod.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Steven Lee" <steven_lee@aspeedtech.com>,
"Troy Lee" <leetroy@gmail.com>,
"Kane Chen" <kane_chen@aspeedtech.com>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
"Joel Stanley" <joel@jms.id.au>,
"Ani Sinha" <anisinha@redhat.com>,
"open list:ASPEED BMCs" <qemu-arm@nongnu.org>,
"open list:All patches CC here" <qemu-devel@nongnu.org>
Cc: Jamin Lin <jamin_lin@aspeedtech.com>, Troy Lee <troy_lee@aspeedtech.com>
Subject: [PATCH v2 04/12] hw/arm/aspeed_ast27x0: Use a table for unimplemented devices
Date: Mon, 12 Oct 2026 06:44:50 +0000 [thread overview]
Message-ID: <20261012064445.2571633-5-jamin_lin@aspeedtech.com> (raw)
In-Reply-To: <20261012064445.2571633-1-jamin_lin@aspeedtech.com>
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
AST2700 to use them.
No functional change.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
hw/arm/aspeed_ast27x0.c | 41 ++++++++++++-----------------------------
1 file changed, 12 insertions(+), 29 deletions(-)
diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
index 6365dbd638..2ef29e31e9 100644
--- a/hw/arm/aspeed_ast27x0.c
+++ b/hw/arm/aspeed_ast27x0.c
@@ -24,10 +24,6 @@
#include "qobject/qlist.h"
#include "qemu/log.h"
-#define AST2700_SOC_IO_SIZE 0x00FE0000
-#define AST2700_SOC_IOMEM_SIZE 0x01000000
-#define AST2700_SOC_DPMCU_SIZE 0x00040000
-
static const hwaddr aspeed_soc_ast2700_memmap[] = {
[ASPEED_DEV_VBOOTROM] = 0x00000000,
[ASPEED_DEV_IOMEM] = 0x00020000,
@@ -263,6 +259,14 @@ static const struct gic_intc_irq_info ast2700_gic_intcmap[] = {
{201, 3, 1, ast2700_gic201_intcmap},
};
+static const UnimplementedDeviceConfig aspeed_soc_ast2700_unimp_devs[] = {
+ { "dpmcu", "aspeed.dpmcu", 0x11000000, 0x00040000, -1000 },
+ { "iomem", "aspeed.io", 0x00020000, 0x00FE0000, -1000 },
+ { "iomem0", "aspeed.iomem0", 0x12000000, 0x01000000, -1000 },
+ { "iomem1", "aspeed.iomem1", 0x14000000, 0x01000000, -1000 },
+ { }
+};
+
static qemu_irq aspeed_soc_ast2700_get_irq(AspeedSoCState *s, int dev)
{
Aspeed27x0SoCState *a = ASPEED27X0_SOC(s);
@@ -558,15 +562,6 @@ static void aspeed_soc_ast2700_init(Object *obj)
qdev_prop_set_uint32(DEVICE(&s->ioexp[i]), "silicon-rev",
sc->silicon_rev);
}
-
- object_initialize_child(obj, "dpmcu", &s->dpmcu,
- TYPE_UNIMPLEMENTED_DEVICE);
- object_initialize_child(obj, "iomem", &s->iomem,
- TYPE_UNIMPLEMENTED_DEVICE);
- object_initialize_child(obj, "iomem0", &s->iomem0,
- TYPE_UNIMPLEMENTED_DEVICE);
- object_initialize_child(obj, "iomem1", &s->iomem1,
- TYPE_UNIMPLEMENTED_DEVICE);
}
/*
@@ -1137,22 +1132,8 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
}
}
- aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->dpmcu),
- "aspeed.dpmcu",
- sc->memmap[ASPEED_DEV_DPMCU],
- AST2700_SOC_DPMCU_SIZE);
- aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->iomem),
- "aspeed.io",
- sc->memmap[ASPEED_DEV_IOMEM],
- AST2700_SOC_IO_SIZE);
- aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->iomem0),
- "aspeed.iomem0",
- sc->memmap[ASPEED_DEV_IOMEM0],
- AST2700_SOC_IOMEM_SIZE);
- aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->iomem1),
- "aspeed.iomem1",
- sc->memmap[ASPEED_DEV_IOMEM1],
- AST2700_SOC_IOMEM_SIZE);
+ /* Unimplemented devices */
+ create_unimplemented_devices(OBJECT(s), s->memory, sc->unimp_devs);
}
static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, const void *data)
@@ -1183,6 +1164,7 @@ static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, const void *data)
sc->uarts_base = ASPEED_DEV_UART0;
sc->irqmap = aspeed_soc_ast2700a1_irqmap;
sc->memmap = aspeed_soc_ast2700_memmap;
+ sc->unimp_devs = aspeed_soc_ast2700_unimp_devs;
}
static void aspeed_soc_ast2700a2_class_init(ObjectClass *oc, const void *data)
@@ -1213,6 +1195,7 @@ static void aspeed_soc_ast2700a2_class_init(ObjectClass *oc, const void *data)
sc->uarts_base = ASPEED_DEV_UART0;
sc->irqmap = aspeed_soc_ast2700a1_irqmap;
sc->memmap = aspeed_soc_ast2700_memmap;
+ sc->unimp_devs = aspeed_soc_ast2700_unimp_devs;
}
static const TypeInfo aspeed_soc_ast27x0_types[] = {
--
2.53.0
next prev parent reply other threads:[~2026-10-12 6:46 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 6:44 [PATCH v2 00/12] hw/arm/aspeed: Use a table for unimplemented devices Jamin Lin
2026-10-12 6:44 ` [PATCH v2 01/12] hw/misc/unimp: Add create_unimplemented_devices() helper Jamin Lin
2026-10-13 8:31 ` Philippe Mathieu-Daudé
2026-10-12 6:44 ` [PATCH v2 02/12] hw/arm/aspeed_ast2400: Use a table for unimplemented devices Jamin Lin
2026-10-12 6:44 ` [PATCH v2 03/12] hw/arm/aspeed_ast2600: " Jamin Lin
2026-10-12 6:44 ` Jamin Lin [this message]
2026-10-12 6:44 ` [PATCH v2 05/12] hw/arm/aspeed_ast10x0: " Jamin Lin
2026-10-12 6:44 ` [PATCH v2 06/12] hw/arm/aspeed_ast1040: " Jamin Lin
2026-10-12 6:44 ` [PATCH v2 07/12] hw/arm/aspeed: Remove unused unimplemented device fields Jamin Lin
2026-10-12 6:44 ` [PATCH v2 08/12] hw/arm/aspeed_ast27x0: Use a table for unimplemented devices for SSP/TSP Jamin Lin
2026-10-12 6:44 ` [PATCH v2 09/12] hw/arm/aspeed_coprocessor: Remove unused unimplemented device fields Jamin Lin
2026-10-12 6:44 ` [PATCH v2 10/12] hw/arm/aspeed_ast1700: Use a table for unimplemented devices Jamin Lin
2026-10-12 6:44 ` [PATCH v2 11/12] hw/arm/aspeed_ast1700: Remove unused unimplemented device field Jamin Lin
2026-10-12 6:44 ` [PATCH v2 12/12] hw/arm/aspeed: Remove unused aspeed_mmio_map_unimplemented() Jamin Lin
2026-10-12 17:04 ` [PATCH v2 00/12] hw/arm/aspeed: Use a table for unimplemented devices Cédric Le Goater
2026-10-13 8:33 ` Philippe Mathieu-Daudé
2026-10-13 12:23 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261012064445.2571633-5-jamin_lin@aspeedtech.com \
--to=jamin_lin@aspeedtech.com \
--cc=andrew@codeconstruct.com.au \
--cc=anisinha@redhat.com \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=kane_chen@aspeedtech.com \
--cc=leetroy@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@oss.qualcomm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=steven_lee@aspeedtech.com \
--cc=troy_lee@aspeedtech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.