From: Jamin Lin <jamin_lin@aspeedtech.com>
To: "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>,
"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 v1 01/11] hw/arm/aspeed_ast2400: Use unimp array and table for unimplemented devices
Date: Wed, 30 Sep 2026 07:25:03 +0000 [thread overview]
Message-ID: <20260930072501.2612119-2-jamin_lin@aspeedtech.com> (raw)
In-Reply-To: <20260930072501.2612119-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.
Add an "unimp" array in AspeedSoCState for all unimplemented devices,
and add an AspeedUnimpDevice table to describe them. This makes the
code easier to maintain and read. Convert AST2400/AST2500 to use them.
No functional change.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
include/hw/arm/aspeed_soc.h | 9 +++++++++
hw/arm/aspeed_ast2400.c | 33 +++++++++++++++++++--------------
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
index 38226d9b80..a9ef4b3550 100644
--- a/include/hw/arm/aspeed_soc.h
+++ b/include/hw/arm/aspeed_soc.h
@@ -64,6 +64,14 @@
#define ASPEED_INTC_NUM 2
#define ASPEED_IOEXP_NUM 2
#define ASPEED_SRAM_NUM 2
+#define ASPEED_UNIMP_NUM 10
+
+typedef struct AspeedUnimpDevice {
+ const char *qom_name;
+ const char *region_name;
+ int memmap_idx;
+ uint64_t size;
+} AspeedUnimpDevice;
struct AspeedSoCState {
DeviceState parent;
@@ -119,6 +127,7 @@ struct AspeedSoCState {
UnimplementedDeviceState espi;
UnimplementedDeviceState udc;
UnimplementedDeviceState jtag[ASPEED_JTAG_NUM];
+ UnimplementedDeviceState unimp[ASPEED_UNIMP_NUM];
AspeedAPB2OPBState fsi[2];
AspeedLTPIState ltpi_ctrl[ASPEED_IOEXP_NUM];
AspeedAST1700SoCState ioexp[ASPEED_IOEXP_NUM];
diff --git a/hw/arm/aspeed_ast2400.c b/hw/arm/aspeed_ast2400.c
index 79a653f65f..3bd9df4e09 100644
--- a/hw/arm/aspeed_ast2400.c
+++ b/hw/arm/aspeed_ast2400.c
@@ -23,8 +23,6 @@
#include "system/system.h"
#include "target/arm/cpu-qom.h"
-#define ASPEED_SOC_IOMEM_SIZE 0x00200000
-
static const hwaddr aspeed_soc_ast2400_memmap[] = {
[ASPEED_DEV_SPI_BOOT] = 0x00000000,
[ASPEED_DEV_IOMEM] = 0x1E600000,
@@ -134,6 +132,12 @@ static const int aspeed_soc_ast2400_irqmap[] = {
#define aspeed_soc_ast2500_irqmap aspeed_soc_ast2400_irqmap
+static const AspeedUnimpDevice aspeed_soc_ast2400_unimp_devs[] = {
+ { "iomem", "aspeed.io", ASPEED_DEV_IOMEM, 0x00200000 },
+ { "video", "aspeed.video", ASPEED_DEV_VIDEO, 0x1000 },
+};
+QEMU_BUILD_BUG_ON(ARRAY_SIZE(aspeed_soc_ast2400_unimp_devs) > ASPEED_UNIMP_NUM);
+
static qemu_irq aspeed_soc_ast2400_get_irq(AspeedSoCState *s, int dev)
{
Aspeed2400SoCState *a = ASPEED2400_SOC(s);
@@ -240,8 +244,10 @@ static void aspeed_ast2400_soc_init(Object *obj)
snprintf(typename, sizeof(typename), "aspeed.hace-%s", socname);
object_initialize_child(obj, "hace", &s->hace, typename);
- object_initialize_child(obj, "iomem", &s->iomem, TYPE_UNIMPLEMENTED_DEVICE);
- object_initialize_child(obj, "video", &s->video, TYPE_UNIMPLEMENTED_DEVICE);
+ for (i = 0; i < ARRAY_SIZE(aspeed_soc_ast2400_unimp_devs); i++) {
+ object_initialize_child(obj, aspeed_soc_ast2400_unimp_devs[i].qom_name,
+ &s->unimp[i], TYPE_UNIMPLEMENTED_DEVICE);
+ }
}
static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
@@ -251,6 +257,7 @@ static void aspeed_ast2400_soc_realize(DeviceState *dev, Error **errp)
AspeedSoCState *s = ASPEED_SOC(dev);
AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
g_autofree char *sram_name = NULL;
+ const AspeedUnimpDevice *unimp;
int uart;
/* Default boot region (SPI memory or ROMs) */
@@ -259,16 +266,14 @@ static void aspeed_ast2400_soc_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);
+ /* Unimplemented devices */
+ for (i = 0; i < ARRAY_SIZE(aspeed_soc_ast2400_unimp_devs); i++) {
+ unimp = &aspeed_soc_ast2400_unimp_devs[i];
+ aspeed_mmio_map_unimplemented(s->memory, SYS_BUS_DEVICE(&s->unimp[i]),
+ unimp->region_name,
+ sc->memmap[unimp->memmap_idx],
+ unimp->size);
+ }
/* CPU */
for (i = 0; i < sc->num_cpus; i++) {
--
2.53.0
next prev parent reply other threads:[~2026-09-30 7:28 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 7:25 [PATCH v1 00/11] hw/arm/aspeed: Use unimp array and table for unimplemented devices Jamin Lin
2026-09-30 7:25 ` Jamin Lin [this message]
2026-09-30 7:37 ` [PATCH v1 01/11] hw/arm/aspeed_ast2400: " Philippe Mathieu-Daudé
2026-09-30 11:50 ` Cédric Le Goater
2026-09-30 12:16 ` Philippe Mathieu-Daudé
2026-10-01 7:41 ` Cédric Le Goater
2026-10-01 11:51 ` Jamin Lin
2026-10-01 12:07 ` Cédric Le Goater
2026-10-02 9:02 ` Jamin Lin
2026-10-07 15:07 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 02/11] hw/arm/aspeed_ast2600: " Jamin Lin
2026-09-30 7:38 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 03/11] hw/arm/aspeed_ast27x0: " Jamin Lin
2026-09-30 7:43 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 04/11] hw/arm/aspeed_ast10x0: " Jamin Lin
2026-09-30 7:39 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 05/11] hw/arm/aspeed_ast1040: " Jamin Lin
2026-09-30 7:42 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 06/11] hw/arm/aspeed: Remove unused unimplemented device fields Jamin Lin
2026-09-30 7:25 ` [PATCH v1 07/11] hw/arm/aspeed_ast27x0: Use unimp array and table for unimplemented devices for SSP/TSP Jamin Lin
2026-09-30 7:41 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 08/11] hw/arm/aspeed_coprocessor: Remove unused unimplemented device fields Jamin Lin
2026-09-30 7:25 ` [PATCH v1 09/11] hw/arm/aspeed_ast1700: Use unimp array and table for unimplemented devices Jamin Lin
2026-09-30 7:40 ` Philippe Mathieu-Daudé
2026-09-30 7:25 ` [PATCH v1 10/11] hw/arm/aspeed_ast1700: Remove unused unimplemented device field Jamin Lin
2026-09-30 7:25 ` [PATCH v1 11/11] hw/arm/aspeed: Sort device IDs alphabetically Jamin Lin
2026-09-30 11:50 ` [PATCH v1 00/11] hw/arm/aspeed: Use unimp array and table for unimplemented devices 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=20260930072501.2612119-2-jamin_lin@aspeedtech.com \
--to=jamin_lin@aspeedtech.com \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=joel@jms.id.au \
--cc=kane_chen@aspeedtech.com \
--cc=leetroy@gmail.com \
--cc=peter.maydell@linaro.org \
--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.