From: Jamin Lin via <qemu-devel@nongnu.org>
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>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
"Joel Stanley" <joel@jms.id.au>,
"Alistair Francis" <alistair@alistair23.me>,
"Kevin Wolf" <kwolf@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"open list:ASPEED BMCs" <qemu-arm@nongnu.org>,
"open list:All patches CC here" <qemu-devel@nongnu.org>,
"open list:Block layer core" <qemu-block@nongnu.org>
Cc: <jamin_lin@aspeedtech.com>, <troy_lee@aspeedtech.com>,
<kane_chen@aspeedtech.com>
Subject: [PATCH v1 08/12] hw/arm/aspeed_ast10x0: Add AST1060 SoC support
Date: Thu, 6 Nov 2025 16:49:17 +0800 [thread overview]
Message-ID: <20251106084925.1253704-9-jamin_lin@aspeedtech.com> (raw)
In-Reply-To: <20251106084925.1253704-1-jamin_lin@aspeedtech.com>
Add initial support for the Aspeed AST1060 SoC. The AST1060 reuses most
of the AST1030 peripheral device models, as the two SoCs share nearly
the same controllers including WDT, SCU, TIMER, HACE, ADC, I2C, FMC,
and SPI.
A new common initialization and realization framework (ast10x0_init
and ast10x0_realize) is leveraged so AST1060 can instantiate the
existing AST1030 models without redefining duplicate device types.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
hw/arm/aspeed_ast10x0.c | 61 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c
index c85c21b149..17f5285d85 100644
--- a/hw/arm/aspeed_ast10x0.c
+++ b/hw/arm/aspeed_ast10x0.c
@@ -190,6 +190,25 @@ static void aspeed_soc_ast1030_init(Object *obj)
object_initialize_child(obj, "peci", &s->peci, TYPE_ASPEED_PECI);
}
+static void aspeed_soc_ast1060_init(Object *obj)
+{
+ char socname[8] = "ast1030";
+
+ /*
+ * The AST1060 SoC reuses the AST1030 device models. Since all peripheral
+ * models (e.g. WDT, SCU, TIMER, HACE, ADC, I2C, FMC, SPI) defined for
+ * AST1030 are compatible with AST1060, we simply reuse the existing
+ * AST1030 models for AST1060.
+ *
+ * To simplify the implementation, AST1060 sets its socname to that of
+ * AST1030, avoiding the need to create a full set of new
+ * TYPE_ASPEED_1060_XXX device definitions. This allows the same
+ * TYPE_ASPEED_1030_WDT and other models to be instantiated for both
+ * SoCs.
+ */
+ aspeed_soc_ast10x0_init(obj, socname);
+}
+
static bool aspeed_soc_ast10x0_realize(Aspeed10x0SoCState *a, Error **errp)
{
AspeedSoCState *s = ASPEED_SOC(a);
@@ -456,6 +475,15 @@ static void aspeed_soc_ast1030_realize(DeviceState *dev_soc, Error **errp)
sc->irqmap[ASPEED_DEV_KCS] + aspeed_lpc_kcs_4));
}
+static void aspeed_soc_ast1060_realize(DeviceState *dev_soc, Error **errp)
+{
+ Aspeed10x0SoCState *a = ASPEED10X0_SOC(dev_soc);
+
+ if (!aspeed_soc_ast10x0_realize(a, errp)) {
+ return;
+ }
+}
+
static void aspeed_soc_ast1030_class_init(ObjectClass *klass, const void *data)
{
static const char * const valid_cpu_types[] = {
@@ -484,6 +512,32 @@ static void aspeed_soc_ast1030_class_init(ObjectClass *klass, const void *data)
sc->num_cpus = 1;
}
+static void aspeed_soc_ast1060_class_init(ObjectClass *klass, const void *data)
+{
+ static const char * const valid_cpu_types[] = {
+ ARM_CPU_TYPE_NAME("cortex-m4"), /* TODO cortex-m4f */
+ NULL
+ };
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ AspeedSoCClass *sc = ASPEED_SOC_CLASS(dc);
+
+ /* Reason: The Aspeed SoC can only be instantiated from a board */
+ dc->user_creatable = false;
+ dc->realize = aspeed_soc_ast1060_realize;
+
+ sc->valid_cpu_types = valid_cpu_types;
+ sc->silicon_rev = AST1060_A2_SILICON_REV;
+ sc->sram_size = 0xc0000;
+ sc->secsram_size = 0x40000; /* 256 * KiB */
+ sc->spis_num = 2;
+ sc->wdts_num = 4;
+ sc->uarts_num = 1;
+ sc->uarts_base = ASPEED_DEV_UART5;
+ sc->irqmap = aspeed_soc_ast1030_irqmap;
+ sc->memmap = aspeed_soc_ast1030_memmap;
+ sc->num_cpus = 1;
+}
+
static const TypeInfo aspeed_soc_ast10x0_types[] = {
{
.name = TYPE_ASPEED10X0_SOC,
@@ -495,7 +549,12 @@ static const TypeInfo aspeed_soc_ast10x0_types[] = {
.parent = TYPE_ASPEED10X0_SOC,
.instance_init = aspeed_soc_ast1030_init,
.class_init = aspeed_soc_ast1030_class_init,
- },
+ }, {
+ .name = "ast1060-a2",
+ .parent = TYPE_ASPEED10X0_SOC,
+ .instance_init = aspeed_soc_ast1060_init,
+ .class_init = aspeed_soc_ast1060_class_init,
+ }
};
DEFINE_TYPES(aspeed_soc_ast10x0_types)
--
2.43.0
next prev parent reply other threads:[~2025-11-06 8:51 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-06 8:49 [PATCH v1 00/12] hw/arm/aspeed: Add AST1060 SoC and EVB support Jamin Lin via
2025-11-06 8:49 ` [PATCH v1 01/12] hw/arm/aspeed: Fix missing SPI IRQ connection causing DMA interrupt failure Jamin Lin via
2025-11-07 7:57 ` Cédric Le Goater
2025-11-10 2:05 ` Jamin Lin
2025-11-10 10:17 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 02/12] hw/block/m25p80: Add SFDP table for Winbond W25Q02JVM flash Jamin Lin via
2025-11-10 14:04 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 03/12] hw/misc/aspeed_scu: Fix the revision ID cannot be set in the SOC layer for AST2600 and AST1030 Jamin Lin via
2025-11-10 14:04 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 04/12] hhw/misc/aspeed_scu: Add AST1060 A2 silicon revision definition Jamin Lin via
2025-11-10 14:04 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 05/12] hw/arm/aspeed_ast10x0: Add common init function for AST10x0 SoCs Jamin Lin via
2025-11-10 14:05 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 06/12] hw/arm/aspeed_ast10x0: Add common realize " Jamin Lin via
2025-11-11 18:18 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 07/12] hw/arm/aspeed_ast10x0: Pass SoC name to common init for AST10x0 family reuse Jamin Lin via
2025-11-11 18:19 ` Cédric Le Goater
2025-11-12 1:21 ` Jamin Lin
2025-11-06 8:49 ` Jamin Lin via [this message]
2025-11-10 14:58 ` [PATCH v1 08/12] hw/arm/aspeed_ast10x0: Add AST1060 SoC support Philippe Mathieu-Daudé
2025-11-11 5:16 ` Jamin Lin
2025-11-06 8:49 ` [PATCH v1 09/12] hw/arm/aspeed_ast10x0_evb: Add AST1060 EVB machine support Jamin Lin via
2025-11-11 18:20 ` Cédric Le Goater
2025-11-12 1:53 ` Jamin Lin
2025-11-06 8:49 ` [PATCH v1 10/12] tests/functional/arm/test_aspeed_ast1060: Add functional tests for Aspeed AST1060 SoC Jamin Lin via
2025-11-11 18:21 ` Cédric Le Goater
2025-11-06 8:49 ` [PATCH v1 11/12] docs/system/arm/aspeed: Update Aspeed and 2700 family boards list Jamin Lin via
2025-11-11 18:22 ` Cédric Le Goater
2025-11-12 1:55 ` Jamin Lin
2025-11-06 8:49 ` [PATCH v1 12/12] docs/system/arm/aspeed: Update Aspeed MiniBMC section to include AST1060 PFR processor Jamin Lin via
2025-11-11 18:24 ` Cédric Le Goater
2025-11-12 2:09 ` Jamin Lin
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=20251106084925.1253704-9-jamin_lin@aspeedtech.com \
--to=qemu-devel@nongnu.org \
--cc=alistair@alistair23.me \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=hreitz@redhat.com \
--cc=jamin_lin@aspeedtech.com \
--cc=joel@jms.id.au \
--cc=kane_chen@aspeedtech.com \
--cc=kwolf@redhat.com \
--cc=leetroy@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).