On 7/7/26 08:09, Jamin Lin wrote:
The original AST2700 FC support series [1] is fairly large, making it
difficult to review all changes together.

To help speed up the review process, this series extracts the SCU/FMC-related
refactoring into a standalone prerequisite series.


  hw/arm/aspeed_ast27x0-ssp.c         |  56 +++++++++++---
  hw/arm/aspeed_ast27x0-tsp.c         |  56 +++++++++++---
  hw/arm/aspeed_coprocessor_common.c  |   2 -

It is unfortunate these 2 complex models diverge so few...

$ diff -u -U0 hw/arm/aspeed_ast27x0-tsp.c hw/arm/aspeed_ast27x0-ssp.c
--- hw/arm/aspeed_ast27x0-tsp.c 2026-07-09 18:42:33
+++ hw/arm/aspeed_ast27x0-ssp.c 2026-07-09 18:42:33
@@ -2 +2 @@
- * ASPEED Ast27x0 TSP Coprocessor
+ * ASPEED Ast27x0 SSP Coprocessor
@@ -19 +19 @@
-#define AST2700_TSP_SDRAM_SIZE (512 * MiB)
+#define AST2700_SSP_SDRAM_SIZE (512 * MiB)
@@ -21 +21 @@
-static const hwaddr aspeed_soc_ast27x0tsp_memmap[] = {
+static const hwaddr aspeed_soc_ast27x0ssp_memmap[] = {
@@ -50 +50 @@
-static const int aspeed_soc_ast27x0tsp_irqmap[] = {
+static const int aspeed_soc_ast27x0ssp_irqmap[] = {
@@ -68,2 +68,2 @@
-/* TSPINT 164 */
-static const int ast2700_tsp164_intcmap[] = {
+/* SSPINT 164 */
+static const int ast2700_ssp164_intcmap[] = {
@@ -91 +91 @@
-static struct nvic_intc_irq_info ast2700_tsp_intcmap[] = {
+static struct nvic_intc_irq_info ast2700_ssp_intcmap[] = {
@@ -96 +96 @@
-    {164, 1, 4, ast2700_tsp164_intcmap},
+    {164, 1, 4, ast2700_ssp164_intcmap},
@@ -104 +104 @@
-static qemu_irq aspeed_soc_ast27x0tsp_get_irq(AspeedCoprocessorState *s,
+static qemu_irq aspeed_soc_ast27x0ssp_get_irq(AspeedCoprocessorState *s,
@@ -107 +107 @@
-    Aspeed27x0CoprocessorState *a = ASPEED27X0TSP_COPROCESSOR(s);
+    Aspeed27x0CoprocessorState *a = ASPEED27X0SSP_COPROCESSOR(s);
@@ -114,5 +114,5 @@
-    for (i = 0; i < ARRAY_SIZE(ast2700_tsp_intcmap); i++) {
-        if (sc->irqmap[dev] == ast2700_tsp_intcmap[i].irq) {
-            assert(ast2700_tsp_intcmap[i].ptr);
-            or_idx = ast2700_tsp_intcmap[i].orgate_idx;
-            idx = ast2700_tsp_intcmap[i].intc_idx;
+    for (i = 0; i < ARRAY_SIZE(ast2700_ssp_intcmap); i++) {
+        if (sc->irqmap[dev] == ast2700_ssp_intcmap[i].irq) {
+            assert(ast2700_ssp_intcmap[i].ptr);
+            or_idx = ast2700_ssp_intcmap[i].orgate_idx;
+            idx = ast2700_ssp_intcmap[i].intc_idx;
@@ -120 +120 @@
-                                    ast2700_tsp_intcmap[i].ptr[dev]);
+                                    ast2700_ssp_intcmap[i].ptr[dev]);
@@ -127 +127 @@
-static void aspeed_soc_ast27x0tsp_init(Object *obj)
+static void aspeed_soc_ast27x0ssp_init(Object *obj)
@@ -129 +129 @@
-    Aspeed27x0CoprocessorState *a = ASPEED27X0TSP_COPROCESSOR(obj);
+    Aspeed27x0CoprocessorState *a = ASPEED27X0SSP_COPROCESSOR(obj);
@@ -136 +136 @@
-                            TYPE_ASPEED_2700TSP_INTC);
+                            TYPE_ASPEED_2700SSP_INTC);
@@ -138 +138 @@
-                            TYPE_ASPEED_2700TSP_INTCIO);
+                            TYPE_ASPEED_2700SSP_INTCIO);
@@ -154 +154 @@
-static void aspeed_soc_ast27x0tsp_realize(DeviceState *dev_soc, Error **errp) +static void aspeed_soc_ast27x0ssp_realize(DeviceState *dev_soc, Error **errp)
@@ -156 +156 @@
-    Aspeed27x0CoprocessorState *a = ASPEED27X0TSP_COPROCESSOR(dev_soc);
+    Aspeed27x0CoprocessorState *a = ASPEED27X0SSP_COPROCESSOR(dev_soc);
@@ -170 +170 @@
-        error_setg(errp, TYPE_ASPEED27X0TSP_COPROCESSOR
+        error_setg(errp, TYPE_ASPEED27X0SSP_COPROCESSOR
@@ -176 +176 @@
-        error_setg(errp, TYPE_ASPEED27X0TSP_COPROCESSOR
+        error_setg(errp, TYPE_ASPEED27X0SSP_COPROCESSOR
@@ -182 +182 @@
-        error_setg(errp, TYPE_ASPEED27X0TSP_COPROCESSOR
+        error_setg(errp, TYPE_ASPEED27X0SSP_COPROCESSOR
@@ -187 +187 @@
-    /* AST27X0 TSP Core */
+    /* AST27X0 SSP Core */
@@ -196,2 +196,2 @@
-     * The TSP starts in a powered-down state and can be powered up
-     * by setting the TSP Control Register through the SCU
+     * The SSP starts in a powered-down state and can be powered up
+     * by setting the SSP Control Register through the SCU
@@ -208 +208 @@
-                                AST2700_TSP_SDRAM_SIZE, errp)) {
+                                AST2700_SSP_SDRAM_SIZE, errp)) {
@@ -235,2 +235,5 @@
-    /* SDRAM remap alias used by PSP to access TSP SDRAM */
- memory_region_add_subregion(&s->sdram, 0, &a->scu->dram_remap_alias[2]);
+    /* SDRAM remap alias used by PSP to access SSP SDRAM */
+ memory_region_add_subregion(&s->sdram, 0, &a->scu->dram_remap_alias[1]);
+    memory_region_add_subregion(&s->sdram,
+            memory_region_size(&a->scu->dram_remap_alias[1]),
+            &a->scu->dram_remap_alias[0]);
@@ -254 +257 @@
-    /* irq source orgates -> INTC */
+    /* irq source orgates -> INTC0 */
@@ -260 +263 @@
-        assert(i < ARRAY_SIZE(ast2700_tsp_intcmap));
+        assert(i < ARRAY_SIZE(ast2700_ssp_intcmap));
@@ -263 +266 @@
-                                            ast2700_tsp_intcmap[i].irq));
+                                            ast2700_ssp_intcmap[i].irq));
@@ -265 +268 @@
-    /* irq source orgates -> INTC */
+    /* irq source orgates -> INTCIO */
@@ -287 +290 @@
-                       aspeed_soc_ast27x0tsp_get_irq(s, s->uart_dev));
+                       aspeed_soc_ast27x0ssp_get_irq(s, s->uart_dev));
@@ -325 +328 @@
-static void aspeed_soc_ast27x0tsp_class_init(ObjectClass *klass,
+static void aspeed_soc_ast27x0ssp_class_init(ObjectClass *klass,
@@ -329 +332 @@
-        ARM_CPU_TYPE_NAME("cortex-m4"), /* TODO cortex-m4f */
+        ARM_CPU_TYPE_NAME("cortex-m4"), /* TODO: cortex-m4f */
@@ -337 +340 @@
-    dc->realize = aspeed_soc_ast27x0tsp_realize;
+    dc->realize = aspeed_soc_ast27x0ssp_realize;
@@ -341,2 +344,2 @@
-    sc->irqmap = aspeed_soc_ast27x0tsp_irqmap;
-    sc->memmap = aspeed_soc_ast27x0tsp_memmap;
+    sc->irqmap = aspeed_soc_ast27x0ssp_irqmap;
+    sc->memmap = aspeed_soc_ast27x0ssp_memmap;
@@ -345 +348 @@
-static const TypeInfo aspeed_soc_ast27x0tsp_types[] = {
+static const TypeInfo aspeed_soc_ast27x0ssp_types[] = {
@@ -347 +350 @@
-        .name           = TYPE_ASPEED27X0TSP_COPROCESSOR,
+        .name           = TYPE_ASPEED27X0SSP_COPROCESSOR,
@@ -350,2 +353,2 @@
-        .instance_init  = aspeed_soc_ast27x0tsp_init,
-        .class_init     = aspeed_soc_ast27x0tsp_class_init,
+        .instance_init  = aspeed_soc_ast27x0ssp_init,
+        .class_init     = aspeed_soc_ast27x0ssp_class_init,
@@ -355 +358 @@
-DEFINE_TYPES(aspeed_soc_ast27x0tsp_types)
+DEFINE_TYPES(aspeed_soc_ast27x0ssp_types)

And without the s/tsp/ssp/ name changes, the diff is as
small as:

$ diff -u -U0 hw/arm/aspeed_ast27x0-tsp.c hw/arm/aspeed_ast27x0-ssp.c
--- hw/arm/aspeed_ast27x0-tsp.c 2026-07-09 18:42:33
+++ hw/arm/aspeed_ast27x0-ssp.c 2026-07-10 01:10:06
@@ -236 +236,4 @@
- memory_region_add_subregion(&s->sdram, 0, &a->scu->dram_remap_alias[2]); + memory_region_add_subregion(&s->sdram, 0, &a->scu->dram_remap_alias[1]);
+    memory_region_add_subregion(&s->sdram,
+            memory_region_size(&a->scu->dram_remap_alias[1]),
+            &a->scu->dram_remap_alias[0]);

2 lines of differences! Could we unify?

Thanks,

Phil.

Reply via email to