All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo
@ 2026-06-01  2:50 Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 01/24] hw/misc/aspeed_hace: Convert " Jamin Lin
                   ` (24 more replies)
  0 siblings, 25 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

The QEMU community now prefers the DEFINE_TYPES() macro over the legacy
type_register_static()/type_init() pattern for device type registration.
DEFINE_TYPES() accepts an array of TypeInfo structs and registers them
all in a single call, making the registration code more concise and
consistent with modern QEMU coding style.

This series converts all Aspeed device models to use DEFINE_TYPES() and
further inlines the individual static TypeInfo variable declarations
directly into the types array, eliminating the need for standalone
TypeInfo variables scattered throughout each file.

v1:
  The changes are purely mechanical refactoring with no functional
  difference. The 24 patches cover all Aspeed-related device models
  across hw/adc, hw/arm, hw/fsi, hw/gpio, hw/i2c, hw/intc, hw/misc,
  hw/net, hw/nvram, hw/pci-host, hw/rtc, hw/ssi, hw/timer and
  hw/watchdog.

Jamin Lin (24):
  hw/misc/aspeed_hace: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_lpc: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_ltpi: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_pwm: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_sbc: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_scu: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_sdmc: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc:aspeed_sli: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/misc/aspeed_xdma: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/adc/aspeed_adc: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/arm/aspeed_ast1700: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/gpio/aspeed_gpio: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/gpio/aspeed_sgpio: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/intc/aspeed_intc: convert to DEFINE_TYPES() with inlined TypeInfo
  hw/intc/aspeed_vic: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/rtc/aspeed_rtc: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/watchdog/wdt_aspeed: Convert to DEFINE_TYPES() with inlined
    TypeInfo
  hw/nvram/aspeed_otp: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/timer/aspeed_timer: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/fsi/aspeed_apb2opb: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/pci-host/aspeed_pcie: Convert to DEFINE_TYPES() with inlined
    TypeInfo
  hw/i2c/aspeed_i2c: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/net/ftgmac100: Convert to DEFINE_TYPES() with inlined TypeInfo
  hw/ssi/aspeed_smc: Convert to DEFINE_TYPES() with inlined TypeInfo

 hw/adc/aspeed_adc.c       |  95 +++++++---------
 hw/arm/aspeed_ast1700.c   |  21 ++--
 hw/fsi/aspeed_apb2opb.c   |  42 +++----
 hw/gpio/aspeed_gpio.c     | 107 ++++++++----------
 hw/gpio/aspeed_sgpio.c    |  37 +++----
 hw/i2c/aspeed_i2c.c       | 113 ++++++++-----------
 hw/intc/aspeed_intc.c     | 121 +++++++++-----------
 hw/intc/aspeed_vic.c      |  19 ++--
 hw/misc/aspeed_hace.c     |  81 ++++++--------
 hw/misc/aspeed_lpc.c      |  21 ++--
 hw/misc/aspeed_ltpi.c     |  19 ++--
 hw/misc/aspeed_pwm.c      |  19 ++--
 hw/misc/aspeed_sbc.c      |  46 ++++----
 hw/misc/aspeed_scu.c      | 107 ++++++++----------
 hw/misc/aspeed_sdmc.c     |  73 ++++++------
 hw/misc/aspeed_sli.c      |  44 ++++----
 hw/misc/aspeed_xdma.c     |  58 +++++-----
 hw/net/ftgmac100.c        |  32 +++---
 hw/nvram/aspeed_otp.c     |  19 ++--
 hw/pci-host/aspeed_pcie.c |  94 +++++++---------
 hw/rtc/aspeed_rtc.c       |  19 ++--
 hw/ssi/aspeed_smc.c       | 228 ++++++++++++++++----------------------
 hw/timer/aspeed_timer.c   |  83 ++++++--------
 hw/watchdog/wdt_aspeed.c  |  93 +++++++---------
 24 files changed, 678 insertions(+), 913 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v1 01/24] hw/misc/aspeed_hace: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 02/24] hw/misc/aspeed_lpc: " Jamin Lin
                   ` (23 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 6 standalone TypeInfo variables (aspeed_hace_info as abstract
base, aspeed_2400_hace_info, aspeed_2500_hace_info,
aspeed_2600_hace_info, aspeed_1030_hace_info, aspeed_2700_hace_info)
directly into the 'aspeed_hace_types[]' array, removing the need for
separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_hace.c | 81 ++++++++++++++++++-------------------------
 1 file changed, 34 insertions(+), 47 deletions(-)

diff --git a/hw/misc/aspeed_hace.c b/hw/misc/aspeed_hace.c
index 4c9e913f6c..c61efe50c4 100644
--- a/hw/misc/aspeed_hace.c
+++ b/hw/misc/aspeed_hace.c
@@ -696,14 +696,6 @@ static void aspeed_hace_class_init(ObjectClass *klass, const void *data)
     dc->vmsd = &vmstate_aspeed_hace;
 }
 
-static const TypeInfo aspeed_hace_info = {
-    .name = TYPE_ASPEED_HACE,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedHACEState),
-    .class_init = aspeed_hace_class_init,
-    .class_size = sizeof(AspeedHACEClass)
-};
-
 static void aspeed_ast2400_hace_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -718,12 +710,6 @@ static void aspeed_ast2400_hace_class_init(ObjectClass *klass, const void *data)
     ahc->hash_mask = 0x000003ff; /* No SG or SHA512 modes */
 }
 
-static const TypeInfo aspeed_ast2400_hace_info = {
-    .name = TYPE_ASPEED_AST2400_HACE,
-    .parent = TYPE_ASPEED_HACE,
-    .class_init = aspeed_ast2400_hace_class_init,
-};
-
 static void aspeed_ast2500_hace_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -738,12 +724,6 @@ static void aspeed_ast2500_hace_class_init(ObjectClass *klass, const void *data)
     ahc->hash_mask = 0x000003ff; /* No SG or SHA512 modes */
 }
 
-static const TypeInfo aspeed_ast2500_hace_info = {
-    .name = TYPE_ASPEED_AST2500_HACE,
-    .parent = TYPE_ASPEED_HACE,
-    .class_init = aspeed_ast2500_hace_class_init,
-};
-
 static void aspeed_ast2600_hace_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -758,12 +738,6 @@ static void aspeed_ast2600_hace_class_init(ObjectClass *klass, const void *data)
     ahc->hash_mask = 0x00147FFF;
 }
 
-static const TypeInfo aspeed_ast2600_hace_info = {
-    .name = TYPE_ASPEED_AST2600_HACE,
-    .parent = TYPE_ASPEED_HACE,
-    .class_init = aspeed_ast2600_hace_class_init,
-};
-
 static void aspeed_ast1030_hace_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -778,12 +752,6 @@ static void aspeed_ast1030_hace_class_init(ObjectClass *klass, const void *data)
     ahc->hash_mask = 0x00147FFF;
 }
 
-static const TypeInfo aspeed_ast1030_hace_info = {
-    .name = TYPE_ASPEED_AST1030_HACE,
-    .parent = TYPE_ASPEED_HACE,
-    .class_init = aspeed_ast1030_hace_class_init,
-};
-
 static void aspeed_ast2700_hace_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -823,20 +791,39 @@ static void aspeed_ast2700_hace_class_init(ObjectClass *klass, const void *data)
     ahc->has_dma64 = true;
 }
 
-static const TypeInfo aspeed_ast2700_hace_info = {
-    .name = TYPE_ASPEED_AST2700_HACE,
-    .parent = TYPE_ASPEED_HACE,
-    .class_init = aspeed_ast2700_hace_class_init,
+static const TypeInfo aspeed_hace_types[] = {
+    {
+        .name = TYPE_ASPEED_HACE,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedHACEState),
+        .class_init = aspeed_hace_class_init,
+        .class_size = sizeof(AspeedHACEClass),
+    },
+    {
+        .name = TYPE_ASPEED_AST1030_HACE,
+        .parent = TYPE_ASPEED_HACE,
+        .class_init = aspeed_ast1030_hace_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_AST2400_HACE,
+        .parent = TYPE_ASPEED_HACE,
+        .class_init = aspeed_ast2400_hace_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_AST2500_HACE,
+        .parent = TYPE_ASPEED_HACE,
+        .class_init = aspeed_ast2500_hace_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_AST2600_HACE,
+        .parent = TYPE_ASPEED_HACE,
+        .class_init = aspeed_ast2600_hace_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_AST2700_HACE,
+        .parent = TYPE_ASPEED_HACE,
+        .class_init = aspeed_ast2700_hace_class_init,
+    }
 };
 
-static void aspeed_hace_register_types(void)
-{
-    type_register_static(&aspeed_ast2400_hace_info);
-    type_register_static(&aspeed_ast2500_hace_info);
-    type_register_static(&aspeed_ast2600_hace_info);
-    type_register_static(&aspeed_ast1030_hace_info);
-    type_register_static(&aspeed_ast2700_hace_info);
-    type_register_static(&aspeed_hace_info);
-}
-
-type_init(aspeed_hace_register_types);
+DEFINE_TYPES(aspeed_hace_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 02/24] hw/misc/aspeed_lpc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 01/24] hw/misc/aspeed_hace: Convert " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 03/24] hw/misc/aspeed_ltpi: " Jamin Lin
                   ` (22 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_lpc_info' TypeInfo variable directly
into the 'aspeed_lpc_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_lpc.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/hw/misc/aspeed_lpc.c b/hw/misc/aspeed_lpc.c
index f69c48da12..7f7e4f1a09 100644
--- a/hw/misc/aspeed_lpc.c
+++ b/hw/misc/aspeed_lpc.c
@@ -470,17 +470,14 @@ static void aspeed_lpc_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_lpc_properties);
 }
 
-static const TypeInfo aspeed_lpc_info = {
-    .name = TYPE_ASPEED_LPC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedLPCState),
-    .class_init = aspeed_lpc_class_init,
-    .instance_init = aspeed_lpc_init,
+static const TypeInfo aspeed_lpc_types[] = {
+    {
+        .name = TYPE_ASPEED_LPC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedLPCState),
+        .class_init = aspeed_lpc_class_init,
+        .instance_init = aspeed_lpc_init,
+    }
 };
 
-static void aspeed_lpc_register_types(void)
-{
-    type_register_static(&aspeed_lpc_info);
-}
-
-type_init(aspeed_lpc_register_types);
+DEFINE_TYPES(aspeed_lpc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 03/24] hw/misc/aspeed_ltpi: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 01/24] hw/misc/aspeed_hace: Convert " Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 02/24] hw/misc/aspeed_lpc: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 04/24] hw/misc/aspeed_pwm: " Jamin Lin
                   ` (21 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_ltpi_info' TypeInfo variable directly
into the 'aspeed_ltpi_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_ltpi.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/hw/misc/aspeed_ltpi.c b/hw/misc/aspeed_ltpi.c
index 956e91d143..2e413550b9 100644
--- a/hw/misc/aspeed_ltpi.c
+++ b/hw/misc/aspeed_ltpi.c
@@ -179,16 +179,13 @@ static void aspeed_ltpi_class_init(ObjectClass *klass, const void *data)
     rc->phases.hold = aspeed_ltpi_reset_hold;
 }
 
-static const TypeInfo aspeed_ltpi_info = {
-    .name          = TYPE_ASPEED_LTPI,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedLTPIState),
-    .class_init    = aspeed_ltpi_class_init,
+static const TypeInfo aspeed_ltpi_types[] = {
+    {
+        .name          = TYPE_ASPEED_LTPI,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedLTPIState),
+        .class_init    = aspeed_ltpi_class_init,
+    }
 };
 
-static void aspeed_ltpi_register_types(void)
-{
-    type_register_static(&aspeed_ltpi_info);
-}
-
-type_init(aspeed_ltpi_register_types);
+DEFINE_TYPES(aspeed_ltpi_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 04/24] hw/misc/aspeed_pwm: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (2 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 03/24] hw/misc/aspeed_ltpi: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 05/24] hw/misc/aspeed_sbc: " Jamin Lin
                   ` (20 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_pwm_info' TypeInfo variable directly
into the 'aspeed_pwm_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_pwm.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/hw/misc/aspeed_pwm.c b/hw/misc/aspeed_pwm.c
index 673a0f1346..dfb93ae7fb 100644
--- a/hw/misc/aspeed_pwm.c
+++ b/hw/misc/aspeed_pwm.c
@@ -106,16 +106,13 @@ static void aspeed_pwm_class_init(ObjectClass *klass, const void *data)
     dc->vmsd = &vmstate_aspeed_pwm;
 }
 
-static const TypeInfo aspeed_pwm_info = {
-    .name = TYPE_ASPEED_PWM,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedPWMState),
-    .class_init = aspeed_pwm_class_init,
+static const TypeInfo aspeed_pwm_types[] = {
+    {
+        .name = TYPE_ASPEED_PWM,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedPWMState),
+        .class_init = aspeed_pwm_class_init,
+    }
 };
 
-static void aspeed_pwm_register_types(void)
-{
-    type_register_static(&aspeed_pwm_info);
-}
-
-type_init(aspeed_pwm_register_types);
+DEFINE_TYPES(aspeed_pwm_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 05/24] hw/misc/aspeed_sbc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (3 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 04/24] hw/misc/aspeed_pwm: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 06/24] hw/misc/aspeed_scu: " Jamin Lin
                   ` (19 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 3 standalone TypeInfo variables (aspeed_2600_sbc_info,
aspeed_ast10x0_sbc_info, aspeed_sbc_info) directly into the
'aspeed_sbc_types[]' array, removing the need for separate
declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_sbc.c | 46 +++++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 26 deletions(-)

diff --git a/hw/misc/aspeed_sbc.c b/hw/misc/aspeed_sbc.c
index 6125d2f134..1dfcf14e5b 100644
--- a/hw/misc/aspeed_sbc.c
+++ b/hw/misc/aspeed_sbc.c
@@ -338,14 +338,6 @@ static void aspeed_sbc_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_sbc_properties);
 }
 
-static const TypeInfo aspeed_sbc_info = {
-    .name = TYPE_ASPEED_SBC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedSBCState),
-    .instance_init = aspeed_sbc_instance_init,
-    .class_init = aspeed_sbc_class_init,
-    .class_size = sizeof(AspeedSBCClass)
-};
 
 static void aspeed_ast2600_sbc_class_init(ObjectClass *klass, const void *data)
 {
@@ -356,12 +348,6 @@ static void aspeed_ast2600_sbc_class_init(ObjectClass *klass, const void *data)
     sc->has_otp = true;
 }
 
-static const TypeInfo aspeed_ast2600_sbc_info = {
-    .name = TYPE_ASPEED_AST2600_SBC,
-    .parent = TYPE_ASPEED_SBC,
-    .class_init = aspeed_ast2600_sbc_class_init,
-};
-
 static void aspeed_ast10x0_sbc_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -371,17 +357,25 @@ static void aspeed_ast10x0_sbc_class_init(ObjectClass *klass, const void *data)
     sc->has_otp = true;
 }
 
-static const TypeInfo aspeed_ast10x0_sbc_info = {
-    .name = TYPE_ASPEED_AST10X0_SBC,
-    .parent = TYPE_ASPEED_SBC,
-    .class_init = aspeed_ast10x0_sbc_class_init,
+static const TypeInfo aspeed_sbc_types[] = {
+    {
+        .name = TYPE_ASPEED_SBC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedSBCState),
+        .instance_init = aspeed_sbc_instance_init,
+        .class_init = aspeed_sbc_class_init,
+        .class_size = sizeof(AspeedSBCClass),
+    },
+    {
+        .name = TYPE_ASPEED_AST10X0_SBC,
+        .parent = TYPE_ASPEED_SBC,
+        .class_init = aspeed_ast10x0_sbc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_AST2600_SBC,
+        .parent = TYPE_ASPEED_SBC,
+        .class_init = aspeed_ast2600_sbc_class_init,
+    }
 };
 
-static void aspeed_sbc_register_types(void)
-{
-    type_register_static(&aspeed_ast2600_sbc_info);
-    type_register_static(&aspeed_ast10x0_sbc_info);
-    type_register_static(&aspeed_sbc_info);
-}
-
-type_init(aspeed_sbc_register_types);
+DEFINE_TYPES(aspeed_sbc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 06/24] hw/misc/aspeed_scu: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (4 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 05/24] hw/misc/aspeed_sbc: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 07/24] hw/misc/aspeed_sdmc: " Jamin Lin
                   ` (18 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 7 standalone TypeInfo variables (aspeed_scu_info as abstract
base, aspeed_2400_scu_info, aspeed_2500_scu_info, aspeed_2600_scu_info,
aspeed_1030_scu_info, aspeed_2700_scu_info, aspeed_2700_scuio_info)
directly into the 'aspeed_scu_types[]' array, removing the need for
separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_scu.c | 107 +++++++++++++++++++------------------------
 1 file changed, 46 insertions(+), 61 deletions(-)

diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c
index 19da6c075f..fe731a28bd 100644
--- a/hw/misc/aspeed_scu.c
+++ b/hw/misc/aspeed_scu.c
@@ -624,15 +624,6 @@ static void aspeed_scu_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_scu_properties);
 }
 
-static const TypeInfo aspeed_scu_info = {
-    .name = TYPE_ASPEED_SCU,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_scu_class_init,
-    .class_size    = sizeof(AspeedSCUClass),
-    .abstract      = true,
-};
-
 static void aspeed_2400_scu_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -648,13 +639,6 @@ static void aspeed_2400_scu_class_init(ObjectClass *klass, const void *data)
     asc->ops = &aspeed_ast2400_scu_ops;
 }
 
-static const TypeInfo aspeed_2400_scu_info = {
-    .name = TYPE_ASPEED_2400_SCU,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_2400_scu_class_init,
-};
-
 static void aspeed_2500_scu_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -670,13 +654,6 @@ static void aspeed_2500_scu_class_init(ObjectClass *klass, const void *data)
     asc->ops = &aspeed_ast2500_scu_ops;
 }
 
-static const TypeInfo aspeed_2500_scu_info = {
-    .name = TYPE_ASPEED_2500_SCU,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_2500_scu_class_init,
-};
-
 static uint64_t aspeed_ast2600_scu_read(void *opaque, hwaddr offset,
                                         unsigned size)
 {
@@ -859,13 +836,6 @@ static void aspeed_2600_scu_class_init(ObjectClass *klass, const void *data)
     asc->ops = &aspeed_ast2600_scu_ops;
 }
 
-static const TypeInfo aspeed_2600_scu_info = {
-    .name = TYPE_ASPEED_2600_SCU,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_2600_scu_class_init,
-};
-
 static uint64_t aspeed_ast2700_scu_read(void *opaque, hwaddr offset,
                                         unsigned size)
 {
@@ -1099,20 +1069,6 @@ static void aspeed_2700_scuio_class_init(ObjectClass *klass, const void *data)
     asc->ops = &aspeed_ast2700_scuio_ops;
 }
 
-static const TypeInfo aspeed_2700_scu_info = {
-    .name = TYPE_ASPEED_2700_SCU,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_2700_scu_class_init,
-};
-
-static const TypeInfo aspeed_2700_scuio_info = {
-    .name = TYPE_ASPEED_2700_SCUIO,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_2700_scuio_class_init,
-};
-
 static const uint32_t ast1030_a1_resets[ASPEED_AST2600_SCU_NR_REGS] = {
     [AST2600_SYS_RST_CTRL]      = 0xFFC3FED8,
     [AST2600_SYS_RST_CTRL2]     = 0x09FFFFFC,
@@ -1158,22 +1114,51 @@ static void aspeed_1030_scu_class_init(ObjectClass *klass, const void *data)
     asc->ops = &aspeed_ast2600_scu_ops;
 }
 
-static const TypeInfo aspeed_1030_scu_info = {
-    .name = TYPE_ASPEED_1030_SCU,
-    .parent = TYPE_ASPEED_SCU,
-    .instance_size = sizeof(AspeedSCUState),
-    .class_init = aspeed_1030_scu_class_init,
+static const TypeInfo aspeed_scu_types[] = {
+    {
+        .name = TYPE_ASPEED_SCU,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_scu_class_init,
+        .class_size    = sizeof(AspeedSCUClass),
+        .abstract      = true,
+    },
+    {
+        .name = TYPE_ASPEED_1030_SCU,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_1030_scu_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2400_SCU,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_2400_scu_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_SCU,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_2500_scu_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_SCU,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_2600_scu_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_SCU,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_2700_scu_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_SCUIO,
+        .parent = TYPE_ASPEED_SCU,
+        .instance_size = sizeof(AspeedSCUState),
+        .class_init = aspeed_2700_scuio_class_init,
+    }
 };
 
-static void aspeed_scu_register_types(void)
-{
-    type_register_static(&aspeed_scu_info);
-    type_register_static(&aspeed_2400_scu_info);
-    type_register_static(&aspeed_2500_scu_info);
-    type_register_static(&aspeed_2600_scu_info);
-    type_register_static(&aspeed_1030_scu_info);
-    type_register_static(&aspeed_2700_scu_info);
-    type_register_static(&aspeed_2700_scuio_info);
-}
-
-type_init(aspeed_scu_register_types);
+DEFINE_TYPES(aspeed_scu_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 07/24] hw/misc/aspeed_sdmc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (5 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 06/24] hw/misc/aspeed_scu: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 08/24] hw/misc:aspeed_sli: " Jamin Lin
                   ` (17 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 5 standalone TypeInfo variables (aspeed_sdmc_info as abstract
base, aspeed_2400_sdmc_info, aspeed_2500_sdmc_info,
aspeed_2600_sdmc_info, aspeed_2700_sdmc_info) directly into the
'aspeed_sdmc_types[]' array, removing the need for separate
declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_sdmc.c | 73 ++++++++++++++++++-------------------------
 1 file changed, 31 insertions(+), 42 deletions(-)

diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c
index 055abf7f50..f8fbaebee6 100644
--- a/hw/misc/aspeed_sdmc.c
+++ b/hw/misc/aspeed_sdmc.c
@@ -310,16 +310,6 @@ static void aspeed_sdmc_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_sdmc_properties);
 }
 
-static const TypeInfo aspeed_sdmc_info = {
-    .name = TYPE_ASPEED_SDMC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedSDMCState),
-    .instance_init = aspeed_sdmc_initfn,
-    .class_init = aspeed_sdmc_class_init,
-    .class_size = sizeof(AspeedSDMCClass),
-    .abstract   = true,
-};
-
 static int aspeed_sdmc_get_ram_bits(AspeedSDMCState *s)
 {
     AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s);
@@ -393,12 +383,6 @@ static void aspeed_2400_sdmc_class_init(ObjectClass *klass, const void *data)
     asc->valid_ram_sizes = aspeed_2400_ram_sizes;
 }
 
-static const TypeInfo aspeed_2400_sdmc_info = {
-    .name = TYPE_ASPEED_2400_SDMC,
-    .parent = TYPE_ASPEED_SDMC,
-    .class_init = aspeed_2400_sdmc_class_init,
-};
-
 static uint32_t aspeed_2500_sdmc_compute_conf(AspeedSDMCState *s, uint32_t data)
 {
     uint32_t fixed_conf = ASPEED_SDMC_HW_VERSION(1) |
@@ -461,12 +445,6 @@ static void aspeed_2500_sdmc_class_init(ObjectClass *klass, const void *data)
     asc->valid_ram_sizes = aspeed_2500_ram_sizes;
 }
 
-static const TypeInfo aspeed_2500_sdmc_info = {
-    .name = TYPE_ASPEED_2500_SDMC,
-    .parent = TYPE_ASPEED_SDMC,
-    .class_init = aspeed_2500_sdmc_class_init,
-};
-
 static uint32_t aspeed_2600_sdmc_compute_conf(AspeedSDMCState *s, uint32_t data)
 {
     uint32_t fixed_conf = ASPEED_SDMC_HW_VERSION(3) |
@@ -555,12 +533,6 @@ static void aspeed_2600_sdmc_class_init(ObjectClass *klass, const void *data)
     asc->valid_ram_sizes = aspeed_2600_ram_sizes;
 }
 
-static const TypeInfo aspeed_2600_sdmc_info = {
-    .name = TYPE_ASPEED_2600_SDMC,
-    .parent = TYPE_ASPEED_SDMC,
-    .class_init = aspeed_2600_sdmc_class_init,
-};
-
 static void aspeed_2700_sdmc_reset_hold(Object *obj, ResetType type)
 {
     AspeedSDMCState *s = ASPEED_SDMC(obj);
@@ -690,19 +662,36 @@ static void aspeed_2700_sdmc_class_init(ObjectClass *klass, const void *data)
     asc->valid_ram_sizes = aspeed_2700_ram_sizes;
 }
 
-static const TypeInfo aspeed_2700_sdmc_info = {
-    .name = TYPE_ASPEED_2700_SDMC,
-    .parent = TYPE_ASPEED_SDMC,
-    .class_init = aspeed_2700_sdmc_class_init,
+static const TypeInfo aspeed_sdmc_types[] = {
+    {
+        .name = TYPE_ASPEED_SDMC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedSDMCState),
+        .instance_init = aspeed_sdmc_initfn,
+        .class_init = aspeed_sdmc_class_init,
+        .class_size = sizeof(AspeedSDMCClass),
+        .abstract   = true,
+    },
+    {
+        .name = TYPE_ASPEED_2400_SDMC,
+        .parent = TYPE_ASPEED_SDMC,
+        .class_init = aspeed_2400_sdmc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_SDMC,
+        .parent = TYPE_ASPEED_SDMC,
+        .class_init = aspeed_2500_sdmc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_SDMC,
+        .parent = TYPE_ASPEED_SDMC,
+        .class_init = aspeed_2600_sdmc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_SDMC,
+        .parent = TYPE_ASPEED_SDMC,
+        .class_init = aspeed_2700_sdmc_class_init,
+    }
 };
 
-static void aspeed_sdmc_register_types(void)
-{
-    type_register_static(&aspeed_sdmc_info);
-    type_register_static(&aspeed_2400_sdmc_info);
-    type_register_static(&aspeed_2500_sdmc_info);
-    type_register_static(&aspeed_2600_sdmc_info);
-    type_register_static(&aspeed_2700_sdmc_info);
-}
-
-type_init(aspeed_sdmc_register_types);
+DEFINE_TYPES(aspeed_sdmc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 08/24] hw/misc:aspeed_sli: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (6 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 07/24] hw/misc/aspeed_sdmc: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 09/24] hw/misc/aspeed_xdma: " Jamin Lin
                   ` (16 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 3 standalone TypeInfo variables (aspeed_sli_info as abstract
base, aspeed_2700_sli_info, aspeed_2700_sliio_info) directly into the
'aspeed_sli_types[]' array, removing the need for separate
declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_sli.c | 44 +++++++++++++++++++-------------------------
 1 file changed, 19 insertions(+), 25 deletions(-)

diff --git a/hw/misc/aspeed_sli.c b/hw/misc/aspeed_sli.c
index 5b4d70cdc0..74ad02faf5 100644
--- a/hw/misc/aspeed_sli.c
+++ b/hw/misc/aspeed_sli.c
@@ -132,13 +132,6 @@ static void aspeed_sli_class_init(ObjectClass *klass, const void *data)
     dc->realize = aspeed_sli_realize;
 }
 
-static const TypeInfo aspeed_sli_info = {
-    .name          = TYPE_ASPEED_SLI,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedSLIState),
-    .class_init    = aspeed_sli_class_init,
-    .abstract      = true,
-};
 
 static void aspeed_2700_sli_class_init(ObjectClass *klass, const void *data)
 {
@@ -155,23 +148,24 @@ static void aspeed_2700_sliio_class_init(ObjectClass *klass, const void *data)
     dc->realize = aspeed_sliio_realize;
 }
 
-static const TypeInfo aspeed_2700_sli_info = {
-    .name           = TYPE_ASPEED_2700_SLI,
-    .parent         = TYPE_ASPEED_SLI,
-    .class_init     = aspeed_2700_sli_class_init,
-};
-
-static const TypeInfo aspeed_2700_sliio_info = {
-    .name           = TYPE_ASPEED_2700_SLIIO,
-    .parent         = TYPE_ASPEED_SLI,
-    .class_init     = aspeed_2700_sliio_class_init,
+static const TypeInfo aspeed_sli_types[] = {
+    {
+        .name          = TYPE_ASPEED_SLI,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedSLIState),
+        .class_init    = aspeed_sli_class_init,
+        .abstract      = true,
+    },
+    {
+        .name           = TYPE_ASPEED_2700_SLI,
+        .parent         = TYPE_ASPEED_SLI,
+        .class_init     = aspeed_2700_sli_class_init,
+    },
+    {
+        .name           = TYPE_ASPEED_2700_SLIIO,
+        .parent         = TYPE_ASPEED_SLI,
+        .class_init     = aspeed_2700_sliio_class_init,
+    }
 };
 
-static void aspeed_sli_register_types(void)
-{
-    type_register_static(&aspeed_sli_info);
-    type_register_static(&aspeed_2700_sli_info);
-    type_register_static(&aspeed_2700_sliio_info);
-}
-
-type_init(aspeed_sli_register_types);
+DEFINE_TYPES(aspeed_sli_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 09/24] hw/misc/aspeed_xdma: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (7 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 08/24] hw/misc:aspeed_sli: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 10/24] hw/adc/aspeed_adc: " Jamin Lin
                   ` (15 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 4 standalone TypeInfo variables (aspeed_xdma_info as abstract
base, aspeed_2400_xdma_info, aspeed_2500_xdma_info,
aspeed_2600_xdma_info) directly into the 'aspeed_xdma_types[]'
array, removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/misc/aspeed_xdma.c | 58 +++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 33 deletions(-)

diff --git a/hw/misc/aspeed_xdma.c b/hw/misc/aspeed_xdma.c
index 80b3259333..58a471ee03 100644
--- a/hw/misc/aspeed_xdma.c
+++ b/hw/misc/aspeed_xdma.c
@@ -167,12 +167,6 @@ static void aspeed_2600_xdma_class_init(ObjectClass *klass, const void *data)
         XDMA_AST2600_IRQ_STATUS_DS_COMP;
 }
 
-static const TypeInfo aspeed_2600_xdma_info = {
-    .name = TYPE_ASPEED_2600_XDMA,
-    .parent = TYPE_ASPEED_XDMA,
-    .class_init = aspeed_2600_xdma_class_init,
-};
-
 static void aspeed_2500_xdma_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -189,12 +183,6 @@ static void aspeed_2500_xdma_class_init(ObjectClass *klass, const void *data)
     axc->intr_complete = XDMA_IRQ_ENG_STAT_US_COMP | XDMA_IRQ_ENG_STAT_DS_COMP;
 };
 
-static const TypeInfo aspeed_2500_xdma_info = {
-    .name = TYPE_ASPEED_2500_XDMA,
-    .parent = TYPE_ASPEED_XDMA,
-    .class_init = aspeed_2500_xdma_class_init,
-};
-
 static void aspeed_2400_xdma_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -211,12 +199,6 @@ static void aspeed_2400_xdma_class_init(ObjectClass *klass, const void *data)
     axc->intr_complete = XDMA_IRQ_ENG_STAT_US_COMP | XDMA_IRQ_ENG_STAT_DS_COMP;
 };
 
-static const TypeInfo aspeed_2400_xdma_info = {
-    .name = TYPE_ASPEED_2400_XDMA,
-    .parent = TYPE_ASPEED_XDMA,
-    .class_init = aspeed_2400_xdma_class_init,
-};
-
 static void aspeed_xdma_class_init(ObjectClass *classp, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(classp);
@@ -227,20 +209,30 @@ static void aspeed_xdma_class_init(ObjectClass *classp, const void *data)
     dc->vmsd = &aspeed_xdma_vmstate;
 }
 
-static const TypeInfo aspeed_xdma_info = {
-    .name          = TYPE_ASPEED_XDMA,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedXDMAState),
-    .class_init    = aspeed_xdma_class_init,
-    .class_size    = sizeof(AspeedXDMAClass),
-    .abstract      = true,
+static const TypeInfo aspeed_xdma_types[] = {
+    {
+        .name          = TYPE_ASPEED_XDMA,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedXDMAState),
+        .class_init    = aspeed_xdma_class_init,
+        .class_size    = sizeof(AspeedXDMAClass),
+        .abstract      = true,
+    },
+    {
+        .name = TYPE_ASPEED_2400_XDMA,
+        .parent = TYPE_ASPEED_XDMA,
+        .class_init = aspeed_2400_xdma_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_XDMA,
+        .parent = TYPE_ASPEED_XDMA,
+        .class_init = aspeed_2500_xdma_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_XDMA,
+        .parent = TYPE_ASPEED_XDMA,
+        .class_init = aspeed_2600_xdma_class_init,
+    }
 };
 
-static void aspeed_xdma_register_type(void)
-{
-    type_register_static(&aspeed_xdma_info);
-    type_register_static(&aspeed_2400_xdma_info);
-    type_register_static(&aspeed_2500_xdma_info);
-    type_register_static(&aspeed_2600_xdma_info);
-}
-type_init(aspeed_xdma_register_type);
+DEFINE_TYPES(aspeed_xdma_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 10/24] hw/adc/aspeed_adc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (8 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 09/24] hw/misc/aspeed_xdma: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 11/24] hw/arm/aspeed_ast1700: " Jamin Lin
                   ` (14 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 7 standalone TypeInfo variables (aspeed_adc_engine_info,
aspeed_adc_info as abstract base, aspeed_2400_adc_info,
aspeed_2500_adc_info, aspeed_2600_adc_info, aspeed_1030_adc_info,
aspeed_2700_adc_info) directly into the 'aspeed_adc_types[]' array,
removing the need for separate declarations. Note that aspeed_2400 and
aspeed_2500 variants carry only .name and .parent with no class_init.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/adc/aspeed_adc.c | 95 +++++++++++++++++++--------------------------
 1 file changed, 40 insertions(+), 55 deletions(-)

diff --git a/hw/adc/aspeed_adc.c b/hw/adc/aspeed_adc.c
index 18b74898e1..70655800a4 100644
--- a/hw/adc/aspeed_adc.c
+++ b/hw/adc/aspeed_adc.c
@@ -304,13 +304,6 @@ static void aspeed_adc_engine_class_init(ObjectClass *klass, const void *data)
     dc->vmsd = &vmstate_aspeed_adc_engine;
 }
 
-static const TypeInfo aspeed_adc_engine_info = {
-    .name = TYPE_ASPEED_ADC_ENGINE,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedADCEngineState),
-    .class_init = aspeed_adc_engine_class_init,
-};
-
 static void aspeed_adc_instance_init(Object *obj)
 {
     AspeedADCState *s = ASPEED_ADC(obj);
@@ -408,53 +401,45 @@ static void aspeed_2700_adc_class_init(ObjectClass *klass, const void *data)
     aac->nr_engines = 2;
 }
 
-static const TypeInfo aspeed_adc_info = {
-    .name = TYPE_ASPEED_ADC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_init = aspeed_adc_instance_init,
-    .instance_size = sizeof(AspeedADCState),
-    .class_init = aspeed_adc_class_init,
-    .class_size = sizeof(AspeedADCClass),
-    .abstract   = true,
-};
-
-static const TypeInfo aspeed_2400_adc_info = {
-    .name = TYPE_ASPEED_2400_ADC,
-    .parent = TYPE_ASPEED_ADC,
-};
-
-static const TypeInfo aspeed_2500_adc_info = {
-    .name = TYPE_ASPEED_2500_ADC,
-    .parent = TYPE_ASPEED_ADC,
-};
-
-static const TypeInfo aspeed_2600_adc_info = {
-    .name = TYPE_ASPEED_2600_ADC,
-    .parent = TYPE_ASPEED_ADC,
-    .class_init = aspeed_2600_adc_class_init,
-};
-
-static const TypeInfo aspeed_1030_adc_info = {
-    .name = TYPE_ASPEED_1030_ADC,
-    .parent = TYPE_ASPEED_ADC,
-    .class_init = aspeed_1030_adc_class_init, /* No change since AST2600 */
-};
-
-static const TypeInfo aspeed_2700_adc_info = {
-    .name = TYPE_ASPEED_2700_ADC,
-    .parent = TYPE_ASPEED_ADC,
-    .class_init = aspeed_2700_adc_class_init,
+static const TypeInfo aspeed_adc_types[] = {
+    {
+        .name = TYPE_ASPEED_ADC_ENGINE,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedADCEngineState),
+        .class_init = aspeed_adc_engine_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_ADC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_init = aspeed_adc_instance_init,
+        .instance_size = sizeof(AspeedADCState),
+        .class_init = aspeed_adc_class_init,
+        .class_size = sizeof(AspeedADCClass),
+        .abstract   = true,
+    },
+    {
+        .name = TYPE_ASPEED_1030_ADC,
+        .parent = TYPE_ASPEED_ADC,
+        .class_init = aspeed_1030_adc_class_init, /* No change since AST2600 */
+    },
+    {
+        .name = TYPE_ASPEED_2400_ADC,
+        .parent = TYPE_ASPEED_ADC,
+    },
+    {
+        .name = TYPE_ASPEED_2500_ADC,
+        .parent = TYPE_ASPEED_ADC,
+    },
+    {
+        .name = TYPE_ASPEED_2600_ADC,
+        .parent = TYPE_ASPEED_ADC,
+        .class_init = aspeed_2600_adc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_ADC,
+        .parent = TYPE_ASPEED_ADC,
+        .class_init = aspeed_2700_adc_class_init,
+    }
 };
 
-static void aspeed_adc_register_types(void)
-{
-    type_register_static(&aspeed_adc_engine_info);
-    type_register_static(&aspeed_adc_info);
-    type_register_static(&aspeed_2400_adc_info);
-    type_register_static(&aspeed_2500_adc_info);
-    type_register_static(&aspeed_2600_adc_info);
-    type_register_static(&aspeed_1030_adc_info);
-    type_register_static(&aspeed_2700_adc_info);
-}
-
-type_init(aspeed_adc_register_types);
+DEFINE_TYPES(aspeed_adc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 11/24] hw/arm/aspeed_ast1700: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (9 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 10/24] hw/adc/aspeed_adc: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 12/24] hw/gpio/aspeed_gpio: " Jamin Lin
                   ` (13 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone TypeInfo variable directly into the
'aspeed_ast1700_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/arm/aspeed_ast1700.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/hw/arm/aspeed_ast1700.c b/hw/arm/aspeed_ast1700.c
index e90302c11b..5af5da5b8a 100644
--- a/hw/arm/aspeed_ast1700.c
+++ b/hw/arm/aspeed_ast1700.c
@@ -260,17 +260,14 @@ static void aspeed_ast1700_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_ast1700_props);
 }
 
-static const TypeInfo aspeed_ast1700_info = {
-    .name          = TYPE_ASPEED_AST1700,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedAST1700SoCState),
-    .class_init    = aspeed_ast1700_class_init,
-    .instance_init = aspeed_ast1700_instance_init,
+static const TypeInfo aspeed_ast1700_types[] = {
+    {
+        .name          = TYPE_ASPEED_AST1700,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedAST1700SoCState),
+        .class_init    = aspeed_ast1700_class_init,
+        .instance_init = aspeed_ast1700_instance_init,
+    }
 };
 
-static void aspeed_ast1700_register_types(void)
-{
-    type_register_static(&aspeed_ast1700_info);
-}
-
-type_init(aspeed_ast1700_register_types);
+DEFINE_TYPES(aspeed_ast1700_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 12/24] hw/gpio/aspeed_gpio: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (10 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 11/24] hw/arm/aspeed_ast1700: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 13/24] hw/gpio/aspeed_sgpio: " Jamin Lin
                   ` (12 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 7 standalone TypeInfo variables (aspeed_gpio_info as abstract
base, aspeed_2400_gpio_info, aspeed_2500_gpio_info,
aspeed_2600_1_8v_gpio_info, aspeed_2600_3_3v_gpio_info,
aspeed_1030_gpio_info, aspeed_2700_gpio_info)
directly into the 'aspeed_gpio_types[]'
array, removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/gpio/aspeed_gpio.c | 107 ++++++++++++++++++------------------------
 1 file changed, 46 insertions(+), 61 deletions(-)

diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c
index ef321b7386..1cf6f5df55 100644
--- a/hw/gpio/aspeed_gpio.c
+++ b/hw/gpio/aspeed_gpio.c
@@ -1620,66 +1620,51 @@ static void aspeed_gpio_2700_class_init(ObjectClass *klass, const void *data)
     agc->reg_ops = &aspeed_gpio_2700_ops;
 }
 
-static const TypeInfo aspeed_gpio_info = {
-    .name           = TYPE_ASPEED_GPIO,
-    .parent         = TYPE_SYS_BUS_DEVICE,
-    .instance_size  = sizeof(AspeedGPIOState),
-    .class_size     = sizeof(AspeedGPIOClass),
-    .class_init     = aspeed_gpio_class_init,
-    .abstract       = true,
-};
-
-static const TypeInfo aspeed_gpio_ast2400_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast2400",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_ast2400_class_init,
-    .instance_init  = aspeed_gpio_init,
-};
-
-static const TypeInfo aspeed_gpio_ast2500_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast2500",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_2500_class_init,
-    .instance_init  = aspeed_gpio_init,
-};
-
-static const TypeInfo aspeed_gpio_ast2600_3_3v_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast2600",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_ast2600_3_3v_class_init,
-    .instance_init  = aspeed_gpio_init,
-};
-
-static const TypeInfo aspeed_gpio_ast2600_1_8v_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast2600-1_8v",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_ast2600_1_8v_class_init,
-    .instance_init  = aspeed_gpio_init,
-};
-
-static const TypeInfo aspeed_gpio_ast1030_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast1030",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_1030_class_init,
-    .instance_init  = aspeed_gpio_init,
-};
-
-static const TypeInfo aspeed_gpio_ast2700_info = {
-    .name           = TYPE_ASPEED_GPIO "-ast2700",
-    .parent         = TYPE_ASPEED_GPIO,
-    .class_init     = aspeed_gpio_2700_class_init,
-    .instance_init  = aspeed_gpio_init,
+static const TypeInfo aspeed_gpio_types[] = {
+    {
+        .name           = TYPE_ASPEED_GPIO,
+        .parent         = TYPE_SYS_BUS_DEVICE,
+        .instance_size  = sizeof(AspeedGPIOState),
+        .class_size     = sizeof(AspeedGPIOClass),
+        .class_init     = aspeed_gpio_class_init,
+        .abstract       = true,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast1030",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_1030_class_init,
+        .instance_init  = aspeed_gpio_init,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast2400",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_ast2400_class_init,
+        .instance_init  = aspeed_gpio_init,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast2500",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_2500_class_init,
+        .instance_init  = aspeed_gpio_init,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast2600",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_ast2600_3_3v_class_init,
+        .instance_init  = aspeed_gpio_init,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast2600-1_8v",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_ast2600_1_8v_class_init,
+        .instance_init  = aspeed_gpio_init,
+    },
+    {
+        .name           = TYPE_ASPEED_GPIO "-ast2700",
+        .parent         = TYPE_ASPEED_GPIO,
+        .class_init     = aspeed_gpio_2700_class_init,
+        .instance_init  = aspeed_gpio_init,
+    }
 };
 
-static void aspeed_gpio_register_types(void)
-{
-    type_register_static(&aspeed_gpio_info);
-    type_register_static(&aspeed_gpio_ast2400_info);
-    type_register_static(&aspeed_gpio_ast2500_info);
-    type_register_static(&aspeed_gpio_ast2600_3_3v_info);
-    type_register_static(&aspeed_gpio_ast2600_1_8v_info);
-    type_register_static(&aspeed_gpio_ast1030_info);
-    type_register_static(&aspeed_gpio_ast2700_info);
-}
-
-type_init(aspeed_gpio_register_types);
+DEFINE_TYPES(aspeed_gpio_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 13/24] hw/gpio/aspeed_sgpio: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (11 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 12/24] hw/gpio/aspeed_gpio: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 14/24] hw/intc/aspeed_intc: convert " Jamin Lin
                   ` (11 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 2 standalone TypeInfo variables (aspeed_sgpio_info and
aspeed_sgpio_ast2700_info) directly into the 'aspeed_sgpio_types[]'
array, removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/gpio/aspeed_sgpio.c | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/hw/gpio/aspeed_sgpio.c b/hw/gpio/aspeed_sgpio.c
index 0c53b03464..7d2f736995 100644
--- a/hw/gpio/aspeed_sgpio.c
+++ b/hw/gpio/aspeed_sgpio.c
@@ -321,26 +321,21 @@ static void aspeed_sgpio_2700_class_init(ObjectClass *klass, const void *data)
     agc->reg_ops = &aspeed_sgpio_2700_ops;
 }
 
-static const TypeInfo aspeed_sgpio_info = {
-    .name           = TYPE_ASPEED_SGPIO,
-    .parent         = TYPE_SYS_BUS_DEVICE,
-    .instance_size  = sizeof(AspeedSGPIOState),
-    .class_size     = sizeof(AspeedSGPIOClass),
-    .class_init     = aspeed_sgpio_class_init,
-    .abstract       = true,
-};
-
-static const TypeInfo aspeed_sgpio_ast2700_info = {
-    .name           = TYPE_ASPEED_SGPIO "-ast2700",
-    .parent         = TYPE_ASPEED_SGPIO,
-    .class_init     = aspeed_sgpio_2700_class_init,
-    .instance_init  = aspeed_sgpio_init,
+static const TypeInfo aspeed_sgpio_types[] = {
+    {
+        .name           = TYPE_ASPEED_SGPIO,
+        .parent         = TYPE_SYS_BUS_DEVICE,
+        .instance_size  = sizeof(AspeedSGPIOState),
+        .class_size     = sizeof(AspeedSGPIOClass),
+        .class_init     = aspeed_sgpio_class_init,
+        .abstract       = true,
+    },
+    {
+        .name           = TYPE_ASPEED_SGPIO "-ast2700",
+        .parent         = TYPE_ASPEED_SGPIO,
+        .class_init     = aspeed_sgpio_2700_class_init,
+        .instance_init  = aspeed_sgpio_init,
+    }
 };
 
-static void aspeed_sgpio_register_types(void)
-{
-    type_register_static(&aspeed_sgpio_info);
-    type_register_static(&aspeed_sgpio_ast2700_info);
-}
-
-type_init(aspeed_sgpio_register_types);
+DEFINE_TYPES(aspeed_sgpio_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 14/24] hw/intc/aspeed_intc: convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (12 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 13/24] hw/gpio/aspeed_sgpio: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 15/24] hw/intc/aspeed_vic: Convert " Jamin Lin
                   ` (10 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 9 standalone TypeInfo variables (aspeed_intc_info as abstract
base, aspeed_2700_intc_info, aspeed_2700_intcio_info,
aspeed_2700_intcioexp1_info, aspeed_2700_intcioexp2_info,
aspeed_2700ssp_intc_info, aspeed_2700ssp_intcio_info,
aspeed_2700tsp_intc_info, aspeed_2700tsp_intcio_info) directly into
the 'aspeed_intc_types[]' array, removing the need for separate
declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/intc/aspeed_intc.c | 121 ++++++++++++++++++------------------------
 1 file changed, 51 insertions(+), 70 deletions(-)

diff --git a/hw/intc/aspeed_intc.c b/hw/intc/aspeed_intc.c
index 3892809430..5a36fff520 100644
--- a/hw/intc/aspeed_intc.c
+++ b/hw/intc/aspeed_intc.c
@@ -758,16 +758,6 @@ static void aspeed_intc_class_init(ObjectClass *klass, const void *data)
     aic->reg_ops = &aspeed_intc_ops;
 }
 
-static const TypeInfo aspeed_intc_info = {
-    .name = TYPE_ASPEED_INTC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_init = aspeed_intc_instance_init,
-    .instance_size = sizeof(AspeedINTCState),
-    .class_init = aspeed_intc_class_init,
-    .class_size = sizeof(AspeedINTCClass),
-    .abstract = true,
-};
-
 static AspeedINTCIRQ aspeed_2700_intc_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 10, R_GICINT192_201_EN, R_GICINT192_201_STATUS},
 };
@@ -788,12 +778,6 @@ static void aspeed_2700_intc_class_init(ObjectClass *klass, const void *data)
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700_intc_irqs);
 }
 
-static const TypeInfo aspeed_2700_intc_info = {
-    .name = TYPE_ASPEED_2700_INTC,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700_intc_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700_intcioexp2_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 8, 1, R_GICINT192_EN, R_GICINT192_STATUS},
     {1, 9, 1, R_GICINT193_EN, R_GICINT193_STATUS},
@@ -817,12 +801,6 @@ static void aspeed_2700_intcioexp2_class_init(ObjectClass *klass,
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700_intcioexp2_irqs);
 }
 
-static const TypeInfo aspeed_2700_intcioexp2_info = {
-    .name = TYPE_ASPEED_2700_INTCIOEXP2,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700_intcioexp2_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700_intcioexp1_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 6, 1, R_GICINT192_EN, R_GICINT192_STATUS},
     {1, 7, 1, R_GICINT193_EN, R_GICINT193_STATUS},
@@ -846,12 +824,6 @@ static void aspeed_2700_intcioexp1_class_init(ObjectClass *klass,
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700_intcioexp1_irqs);
 }
 
-static const TypeInfo aspeed_2700_intcioexp1_info = {
-    .name = TYPE_ASPEED_2700_INTCIOEXP1,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700_intcioexp1_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700_intcio_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 1, R_GICINT192_EN, R_GICINT192_STATUS},
     {1, 1, 1, R_GICINT193_EN, R_GICINT193_STATUS},
@@ -878,12 +850,6 @@ static void aspeed_2700_intcio_class_init(ObjectClass *klass, const void *data)
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700_intcio_irqs);
 }
 
-static const TypeInfo aspeed_2700_intcio_info = {
-    .name = TYPE_ASPEED_2700_INTCIO,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700_intcio_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700ssp_intc_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 10, R_SSPINT160_169_EN, R_SSPINT160_169_STATUS},
 };
@@ -905,12 +871,6 @@ static void aspeed_2700ssp_intc_class_init(ObjectClass *klass, const void *data)
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700ssp_intc_irqs);
 }
 
-static const TypeInfo aspeed_2700ssp_intc_info = {
-    .name = TYPE_ASPEED_2700SSP_INTC,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700ssp_intc_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700ssp_intcio_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 1, R_SSPINT160_EN, R_SSPINT160_STATUS},
     {1, 1, 1, R_SSPINT161_EN, R_SSPINT161_STATUS},
@@ -938,12 +898,6 @@ static void aspeed_2700ssp_intcio_class_init(ObjectClass *klass,
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700ssp_intcio_irqs);
 }
 
-static const TypeInfo aspeed_2700ssp_intcio_info = {
-    .name = TYPE_ASPEED_2700SSP_INTCIO,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700ssp_intcio_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700tsp_intc_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 10, R_TSPINT160_169_EN, R_TSPINT160_169_STATUS},
 };
@@ -965,12 +919,6 @@ static void aspeed_2700tsp_intc_class_init(ObjectClass *klass, const void *data)
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700tsp_intc_irqs);
 }
 
-static const TypeInfo aspeed_2700tsp_intc_info = {
-    .name = TYPE_ASPEED_2700TSP_INTC,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700tsp_intc_class_init,
-};
-
 static AspeedINTCIRQ aspeed_2700tsp_intcio_irqs[ASPEED_INTC_MAX_INPINS] = {
     {0, 0, 1, R_TSPINT160_EN, R_TSPINT160_STATUS},
     {1, 1, 1, R_TSPINT161_EN, R_TSPINT161_STATUS},
@@ -998,23 +946,56 @@ static void aspeed_2700tsp_intcio_class_init(ObjectClass *klass,
     aic->irq_table_count = ARRAY_SIZE(aspeed_2700tsp_intcio_irqs);
 }
 
-static const TypeInfo aspeed_2700tsp_intcio_info = {
-    .name = TYPE_ASPEED_2700TSP_INTCIO,
-    .parent = TYPE_ASPEED_INTC,
-    .class_init = aspeed_2700tsp_intcio_class_init,
+static const TypeInfo aspeed_intc_types[] = {
+    {
+        .name = TYPE_ASPEED_INTC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_init = aspeed_intc_instance_init,
+        .instance_size = sizeof(AspeedINTCState),
+        .class_init = aspeed_intc_class_init,
+        .class_size = sizeof(AspeedINTCClass),
+        .abstract = true,
+    },
+    {
+        .name = TYPE_ASPEED_2700_INTC,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700_intc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_INTCIO,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700_intcio_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700SSP_INTC,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700ssp_intc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700SSP_INTCIO,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700ssp_intcio_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700TSP_INTC,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700tsp_intc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700TSP_INTCIO,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700tsp_intcio_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_INTCIOEXP1,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700_intcioexp1_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_INTCIOEXP2,
+        .parent = TYPE_ASPEED_INTC,
+        .class_init = aspeed_2700_intcioexp2_class_init,
+    }
 };
 
-static void aspeed_intc_register_types(void)
-{
-    type_register_static(&aspeed_intc_info);
-    type_register_static(&aspeed_2700_intc_info);
-    type_register_static(&aspeed_2700_intcio_info);
-    type_register_static(&aspeed_2700_intcioexp1_info);
-    type_register_static(&aspeed_2700_intcioexp2_info);
-    type_register_static(&aspeed_2700ssp_intc_info);
-    type_register_static(&aspeed_2700ssp_intcio_info);
-    type_register_static(&aspeed_2700tsp_intc_info);
-    type_register_static(&aspeed_2700tsp_intcio_info);
-}
-
-type_init(aspeed_intc_register_types);
+DEFINE_TYPES(aspeed_intc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 15/24] hw/intc/aspeed_vic: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (13 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 14/24] hw/intc/aspeed_intc: convert " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 16/24] hw/rtc/aspeed_rtc: " Jamin Lin
                   ` (9 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_vic_info' TypeInfo variable directly
into the 'aspeed_vic_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/intc/aspeed_vic.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/hw/intc/aspeed_vic.c b/hw/intc/aspeed_vic.c
index 13d8423d83..bd0c87802e 100644
--- a/hw/intc/aspeed_vic.c
+++ b/hw/intc/aspeed_vic.c
@@ -349,16 +349,13 @@ static void aspeed_vic_class_init(ObjectClass *klass, const void *data)
     dc->vmsd = &vmstate_aspeed_vic;
 }
 
-static const TypeInfo aspeed_vic_info = {
-    .name = TYPE_ASPEED_VIC,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedVICState),
-    .class_init = aspeed_vic_class_init,
+static const TypeInfo aspeed_vic_types[] = {
+    {
+        .name = TYPE_ASPEED_VIC,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedVICState),
+        .class_init = aspeed_vic_class_init,
+    }
 };
 
-static void aspeed_vic_register_types(void)
-{
-    type_register_static(&aspeed_vic_info);
-}
-
-type_init(aspeed_vic_register_types);
+DEFINE_TYPES(aspeed_vic_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 16/24] hw/rtc/aspeed_rtc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (14 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 15/24] hw/intc/aspeed_vic: Convert " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 17/24] hw/watchdog/wdt_aspeed: " Jamin Lin
                   ` (8 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_rtc_info' TypeInfo variable directly
into the 'aspeed_rtc_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/rtc/aspeed_rtc.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/hw/rtc/aspeed_rtc.c b/hw/rtc/aspeed_rtc.c
index 5245f3f956..34d9fcfa36 100644
--- a/hw/rtc/aspeed_rtc.c
+++ b/hw/rtc/aspeed_rtc.c
@@ -166,16 +166,13 @@ static void aspeed_rtc_class_init(ObjectClass *klass, const void *data)
     rc->phases.hold = aspeed_rtc_reset_hold;
 }
 
-static const TypeInfo aspeed_rtc_info = {
-    .name          = TYPE_ASPEED_RTC,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedRtcState),
-    .class_init    = aspeed_rtc_class_init,
+static const TypeInfo aspeed_rtc_types[] = {
+    {
+        .name          = TYPE_ASPEED_RTC,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedRtcState),
+        .class_init    = aspeed_rtc_class_init,
+    }
 };
 
-static void aspeed_rtc_register_types(void)
-{
-    type_register_static(&aspeed_rtc_info);
-}
-
-type_init(aspeed_rtc_register_types)
+DEFINE_TYPES(aspeed_rtc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 17/24] hw/watchdog/wdt_aspeed: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (15 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 16/24] hw/rtc/aspeed_rtc: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 18/24] hw/nvram/aspeed_otp: " Jamin Lin
                   ` (7 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 6 standalone TypeInfo variables (aspeed_wdt_info as abstract
base, aspeed_2400_wdt_info, aspeed_2500_wdt_info, aspeed_2600_wdt_info,
aspeed_1030_wdt_info, aspeed_2700_wdt_info) directly into the
'aspeed_wdt_types[]' array, removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/watchdog/wdt_aspeed.c | 93 +++++++++++++++++-----------------------
 1 file changed, 40 insertions(+), 53 deletions(-)

diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c
index ae411593c5..deed970c89 100644
--- a/hw/watchdog/wdt_aspeed.c
+++ b/hw/watchdog/wdt_aspeed.c
@@ -321,15 +321,6 @@ static void aspeed_wdt_class_init(ObjectClass *klass, const void *data)
     dc->desc = "Aspeed watchdog device";
 }
 
-static const TypeInfo aspeed_wdt_info = {
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .name  = TYPE_ASPEED_WDT,
-    .instance_size  = sizeof(AspeedWDTState),
-    .class_init = aspeed_wdt_class_init,
-    .class_size    = sizeof(AspeedWDTClass),
-    .abstract      = true,
-};
-
 static void aspeed_2400_wdt_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -345,13 +336,6 @@ static void aspeed_2400_wdt_class_init(ObjectClass *klass, const void *data)
     awc->default_reload_value = 0x03EF1480;
 }
 
-static const TypeInfo aspeed_2400_wdt_info = {
-    .name = TYPE_ASPEED_2400_WDT,
-    .parent = TYPE_ASPEED_WDT,
-    .instance_size = sizeof(AspeedWDTState),
-    .class_init = aspeed_2400_wdt_class_init,
-};
-
 static void aspeed_2500_wdt_reset_pulse(AspeedWDTState *s, uint32_t property)
 {
     if (property) {
@@ -383,13 +367,6 @@ static void aspeed_2500_wdt_class_init(ObjectClass *klass, const void *data)
     awc->default_reload_value = 0x014FB180;
 }
 
-static const TypeInfo aspeed_2500_wdt_info = {
-    .name = TYPE_ASPEED_2500_WDT,
-    .parent = TYPE_ASPEED_WDT,
-    .instance_size = sizeof(AspeedWDTState),
-    .class_init = aspeed_2500_wdt_class_init,
-};
-
 static void aspeed_2600_wdt_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -406,13 +383,6 @@ static void aspeed_2600_wdt_class_init(ObjectClass *klass, const void *data)
     awc->default_reload_value = 0x014FB180;
 }
 
-static const TypeInfo aspeed_2600_wdt_info = {
-    .name = TYPE_ASPEED_2600_WDT,
-    .parent = TYPE_ASPEED_WDT,
-    .instance_size = sizeof(AspeedWDTState),
-    .class_init = aspeed_2600_wdt_class_init,
-};
-
 static void aspeed_1030_wdt_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -429,13 +399,6 @@ static void aspeed_1030_wdt_class_init(ObjectClass *klass, const void *data)
     awc->default_reload_value = 0x014FB180;
 }
 
-static const TypeInfo aspeed_1030_wdt_info = {
-    .name = TYPE_ASPEED_1030_WDT,
-    .parent = TYPE_ASPEED_WDT,
-    .instance_size = sizeof(AspeedWDTState),
-    .class_init = aspeed_1030_wdt_class_init,
-};
-
 static void aspeed_2700_wdt_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -452,21 +415,45 @@ static void aspeed_2700_wdt_class_init(ObjectClass *klass, const void *data)
     awc->default_reload_value = 0x014FB180;
 }
 
-static const TypeInfo aspeed_2700_wdt_info = {
-    .name = TYPE_ASPEED_2700_WDT,
-    .parent = TYPE_ASPEED_WDT,
-    .instance_size = sizeof(AspeedWDTState),
-    .class_init = aspeed_2700_wdt_class_init,
+static const TypeInfo aspeed_wdt_types[] = {
+    {
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .name  = TYPE_ASPEED_WDT,
+        .instance_size  = sizeof(AspeedWDTState),
+        .class_init = aspeed_wdt_class_init,
+        .class_size    = sizeof(AspeedWDTClass),
+        .abstract      = true,
+    },
+    {
+        .name = TYPE_ASPEED_1030_WDT,
+        .parent = TYPE_ASPEED_WDT,
+        .instance_size = sizeof(AspeedWDTState),
+        .class_init = aspeed_1030_wdt_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2400_WDT,
+        .parent = TYPE_ASPEED_WDT,
+        .instance_size = sizeof(AspeedWDTState),
+        .class_init = aspeed_2400_wdt_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_WDT,
+        .parent = TYPE_ASPEED_WDT,
+        .instance_size = sizeof(AspeedWDTState),
+        .class_init = aspeed_2500_wdt_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_WDT,
+        .parent = TYPE_ASPEED_WDT,
+        .instance_size = sizeof(AspeedWDTState),
+        .class_init = aspeed_2600_wdt_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_WDT,
+        .parent = TYPE_ASPEED_WDT,
+        .instance_size = sizeof(AspeedWDTState),
+        .class_init = aspeed_2700_wdt_class_init,
+    }
 };
 
-static void wdt_aspeed_register_types(void)
-{
-    type_register_static(&aspeed_wdt_info);
-    type_register_static(&aspeed_2400_wdt_info);
-    type_register_static(&aspeed_2500_wdt_info);
-    type_register_static(&aspeed_2600_wdt_info);
-    type_register_static(&aspeed_2700_wdt_info);
-    type_register_static(&aspeed_1030_wdt_info);
-}
-
-type_init(wdt_aspeed_register_types)
+DEFINE_TYPES(aspeed_wdt_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 18/24] hw/nvram/aspeed_otp: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (16 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 17/24] hw/watchdog/wdt_aspeed: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 19/24] hw/timer/aspeed_timer: " Jamin Lin
                   ` (6 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline the standalone 'aspeed_otp_info' TypeInfo variable directly
into the 'aspeed_otp_types[]' array, removing the need for a separate
declaration.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/nvram/aspeed_otp.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/hw/nvram/aspeed_otp.c b/hw/nvram/aspeed_otp.c
index 1a9d3841b8..81304bda3a 100644
--- a/hw/nvram/aspeed_otp.c
+++ b/hw/nvram/aspeed_otp.c
@@ -174,16 +174,13 @@ static void aspeed_otp_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_otp_properties);
 }
 
-static const TypeInfo aspeed_otp_info = {
-    .name          = TYPE_ASPEED_OTP,
-    .parent        = TYPE_DEVICE,
-    .instance_size = sizeof(AspeedOTPState),
-    .class_init    = aspeed_otp_class_init,
+static const TypeInfo aspeed_otp_types[] = {
+    {
+        .name          = TYPE_ASPEED_OTP,
+        .parent        = TYPE_DEVICE,
+        .instance_size = sizeof(AspeedOTPState),
+        .class_init    = aspeed_otp_class_init,
+    }
 };
 
-static void aspeed_otp_register_types(void)
-{
-    type_register_static(&aspeed_otp_info);
-}
-
-type_init(aspeed_otp_register_types)
+DEFINE_TYPES(aspeed_otp_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 19/24] hw/timer/aspeed_timer: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (17 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 18/24] hw/nvram/aspeed_otp: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 20/24] hw/fsi/aspeed_apb2opb: " Jamin Lin
                   ` (5 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 6 standalone TypeInfo variables (aspeed_timer_info as abstract
base, aspeed_2400_timer_info, aspeed_2500_timer_info,
aspeed_2600_timer_info, aspeed_1030_timer_info, aspeed_2700_timer_info)
directly into the 'aspeed_timer_types[]' array, removing the need for
separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/timer/aspeed_timer.c | 83 +++++++++++++++++------------------------
 1 file changed, 35 insertions(+), 48 deletions(-)

diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c
index 69f5c89215..a607736387 100644
--- a/hw/timer/aspeed_timer.c
+++ b/hw/timer/aspeed_timer.c
@@ -907,15 +907,6 @@ static void timer_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_timer_properties);
 }
 
-static const TypeInfo aspeed_timer_info = {
-    .name = TYPE_ASPEED_TIMER,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedTimerCtrlState),
-    .class_init = timer_class_init,
-    .class_size = sizeof(AspeedTimerClass),
-    .abstract   = true,
-};
-
 static void aspeed_2400_timer_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -926,12 +917,6 @@ static void aspeed_2400_timer_class_init(ObjectClass *klass, const void *data)
     awc->write = aspeed_2400_timer_write;
 }
 
-static const TypeInfo aspeed_2400_timer_info = {
-    .name = TYPE_ASPEED_2400_TIMER,
-    .parent = TYPE_ASPEED_TIMER,
-    .class_init = aspeed_2400_timer_class_init,
-};
-
 static void aspeed_2500_timer_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -942,12 +927,6 @@ static void aspeed_2500_timer_class_init(ObjectClass *klass, const void *data)
     awc->write = aspeed_2500_timer_write;
 }
 
-static const TypeInfo aspeed_2500_timer_info = {
-    .name = TYPE_ASPEED_2500_TIMER,
-    .parent = TYPE_ASPEED_TIMER,
-    .class_init = aspeed_2500_timer_class_init,
-};
-
 static void aspeed_2600_timer_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -958,12 +937,6 @@ static void aspeed_2600_timer_class_init(ObjectClass *klass, const void *data)
     awc->write = aspeed_2600_timer_write;
 }
 
-static const TypeInfo aspeed_2600_timer_info = {
-    .name = TYPE_ASPEED_2600_TIMER,
-    .parent = TYPE_ASPEED_TIMER,
-    .class_init = aspeed_2600_timer_class_init,
-};
-
 static void aspeed_1030_timer_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -974,12 +947,6 @@ static void aspeed_1030_timer_class_init(ObjectClass *klass, const void *data)
     awc->write = aspeed_2600_timer_write;
 }
 
-static const TypeInfo aspeed_1030_timer_info = {
-    .name = TYPE_ASPEED_1030_TIMER,
-    .parent = TYPE_ASPEED_TIMER,
-    .class_init = aspeed_1030_timer_class_init,
-};
-
 static void aspeed_2700_timer_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -990,20 +957,40 @@ static void aspeed_2700_timer_class_init(ObjectClass *klass, const void *data)
     awc->write = aspeed_2700_timer_write;
 }
 
-static const TypeInfo aspeed_2700_timer_info = {
-    .name = TYPE_ASPEED_2700_TIMER,
-    .parent = TYPE_ASPEED_TIMER,
-    .class_init = aspeed_2700_timer_class_init,
+static const TypeInfo aspeed_timer_types[] = {
+    {
+        .name = TYPE_ASPEED_TIMER,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedTimerCtrlState),
+        .class_init = timer_class_init,
+        .class_size = sizeof(AspeedTimerClass),
+        .abstract   = true,
+    },
+    {
+        .name = TYPE_ASPEED_1030_TIMER,
+        .parent = TYPE_ASPEED_TIMER,
+        .class_init = aspeed_1030_timer_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2400_TIMER,
+        .parent = TYPE_ASPEED_TIMER,
+        .class_init = aspeed_2400_timer_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_TIMER,
+        .parent = TYPE_ASPEED_TIMER,
+        .class_init = aspeed_2500_timer_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_TIMER,
+        .parent = TYPE_ASPEED_TIMER,
+        .class_init = aspeed_2600_timer_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_TIMER,
+        .parent = TYPE_ASPEED_TIMER,
+        .class_init = aspeed_2700_timer_class_init,
+    }
 };
 
-static void aspeed_timer_register_types(void)
-{
-    type_register_static(&aspeed_timer_info);
-    type_register_static(&aspeed_2400_timer_info);
-    type_register_static(&aspeed_2500_timer_info);
-    type_register_static(&aspeed_2600_timer_info);
-    type_register_static(&aspeed_1030_timer_info);
-    type_register_static(&aspeed_2700_timer_info);
-}
-
-type_init(aspeed_timer_register_types)
+DEFINE_TYPES(aspeed_timer_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 20/24] hw/fsi/aspeed_apb2opb: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (18 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 19/24] hw/timer/aspeed_timer: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 21/24] hw/pci-host/aspeed_pcie: " Jamin Lin
                   ` (4 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

This file contains two independent subsystems (aspeed_apb2opb and
fsi_opb), each with its own type_init() call. Both are converted to
separate DEFINE_TYPES() blocks to preserve the original registration
boundary.

Inline the standalone 'aspeed_apb2opb_info' and 'fsi_opb_info'
TypeInfo variables directly into their respective types arrays,
removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/fsi/aspeed_apb2opb.c | 42 ++++++++++++++++++-----------------------
 1 file changed, 18 insertions(+), 24 deletions(-)

diff --git a/hw/fsi/aspeed_apb2opb.c b/hw/fsi/aspeed_apb2opb.c
index f2d9a9669a..7a37770a43 100644
--- a/hw/fsi/aspeed_apb2opb.c
+++ b/hw/fsi/aspeed_apb2opb.c
@@ -319,20 +319,17 @@ static void fsi_aspeed_apb2opb_class_init(ObjectClass *klass, const void *data)
     rc->phases.hold = fsi_aspeed_apb2opb_reset_hold;
 }
 
-static const TypeInfo aspeed_apb2opb_info = {
-    .name = TYPE_ASPEED_APB2OPB,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_init = fsi_aspeed_apb2opb_init,
-    .instance_size = sizeof(AspeedAPB2OPBState),
-    .class_init = fsi_aspeed_apb2opb_class_init,
+static const TypeInfo aspeed_apb2opb_types[] = {
+    {
+        .name = TYPE_ASPEED_APB2OPB,
+        .parent = TYPE_SYS_BUS_DEVICE,
+        .instance_init = fsi_aspeed_apb2opb_init,
+        .instance_size = sizeof(AspeedAPB2OPBState),
+        .class_init = fsi_aspeed_apb2opb_class_init,
+    }
 };
 
-static void aspeed_apb2opb_register_types(void)
-{
-    type_register_static(&aspeed_apb2opb_info);
-}
-
-type_init(aspeed_apb2opb_register_types);
+DEFINE_TYPES(aspeed_apb2opb_types)
 
 static void fsi_opb_init(Object *o)
 {
@@ -363,17 +360,14 @@ static void fsi_opb_class_init(ObjectClass *klass, const void *data)
     bc->unrealize = fsi_opb_unrealize;
 }
 
-static const TypeInfo opb_info = {
-    .name = TYPE_OP_BUS,
-    .parent = TYPE_BUS,
-    .instance_init = fsi_opb_init,
-    .instance_size = sizeof(OPBus),
-    .class_init = fsi_opb_class_init,
+static const TypeInfo fsi_opb_types[] = {
+    {
+        .name = TYPE_OP_BUS,
+        .parent = TYPE_BUS,
+        .instance_init = fsi_opb_init,
+        .instance_size = sizeof(OPBus),
+        .class_init = fsi_opb_class_init,
+    }
 };
 
-static void fsi_opb_register_types(void)
-{
-    type_register_static(&opb_info);
-}
-
-type_init(fsi_opb_register_types);
+DEFINE_TYPES(fsi_opb_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 21/24] hw/pci-host/aspeed_pcie: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (19 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 20/24] hw/fsi/aspeed_apb2opb: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 22/24] hw/i2c/aspeed_i2c: " Jamin Lin
                   ` (3 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 6 standalone TypeInfo variables (aspeed_pcie_phy_info, aspeed_2700_pcie_phy_info
aspeed_pcie_root_port_info, aspeed_pcie_rc_info, aspeed_pcie_cfg_info and
aspeed_2700_pcie_cfg_info directly into the 'aspeed_pcie_types[]'
array, removing the need for separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/pci-host/aspeed_pcie.c | 94 +++++++++++++++++----------------------
 1 file changed, 41 insertions(+), 53 deletions(-)

diff --git a/hw/pci-host/aspeed_pcie.c b/hw/pci-host/aspeed_pcie.c
index 186e5aeea2..b46eb74234 100644
--- a/hw/pci-host/aspeed_pcie.c
+++ b/hw/pci-host/aspeed_pcie.c
@@ -83,13 +83,6 @@ static void aspeed_pcie_root_port_class_init(ObjectClass *klass,
     rpc->ssid = 0x1150;
 }
 
-static const TypeInfo aspeed_pcie_root_port_info = {
-    .name = TYPE_ASPEED_PCIE_ROOT_PORT,
-    .parent = TYPE_PCIE_ROOT_PORT,
-    .instance_size = sizeof(AspeedPCIERootPortState),
-    .class_init = aspeed_pcie_root_port_class_init,
-};
-
 /*
  * PCIe Root Complex (RC)
  */
@@ -305,14 +298,6 @@ static void aspeed_pcie_rc_class_init(ObjectClass *klass, const void *data)
     msi_nonbroken = true;
 }
 
-static const TypeInfo aspeed_pcie_rc_info = {
-    .name = TYPE_ASPEED_PCIE_RC,
-    .parent = TYPE_PCIE_HOST_BRIDGE,
-    .instance_size = sizeof(AspeedPCIERcState),
-    .instance_init = aspeed_pcie_rc_instance_init,
-    .class_init = aspeed_pcie_rc_class_init,
-};
-
 /*
  * PCIe Config
  *
@@ -679,15 +664,6 @@ static void aspeed_pcie_cfg_class_init(ObjectClass *klass, const void *data)
     apc->rc_rp_addr = PCI_DEVFN(8, 0);
 }
 
-static const TypeInfo aspeed_pcie_cfg_info = {
-    .name       = TYPE_ASPEED_PCIE_CFG,
-    .parent     = TYPE_SYS_BUS_DEVICE,
-    .instance_init = aspeed_pcie_cfg_instance_init,
-    .instance_size = sizeof(AspeedPCIECfgState),
-    .class_init = aspeed_pcie_cfg_class_init,
-    .class_size = sizeof(AspeedPCIECfgClass),
-};
-
 static void aspeed_2700_pcie_cfg_write(void *opaque, hwaddr addr,
                                        uint64_t data, unsigned int size)
 {
@@ -798,12 +774,6 @@ static void aspeed_2700_pcie_cfg_class_init(ObjectClass *klass,
     apc->rc_rp_addr = PCI_DEVFN(0, 0);
 }
 
-static const TypeInfo aspeed_2700_pcie_cfg_info = {
-    .name = TYPE_ASPEED_2700_PCIE_CFG,
-    .parent = TYPE_ASPEED_PCIE_CFG,
-    .class_init = aspeed_2700_pcie_cfg_class_init,
-};
-
 /*
  * PCIe PHY
  *
@@ -926,14 +896,6 @@ static void aspeed_pcie_phy_class_init(ObjectClass *klass, const void *data)
     apc->nr_regs = 0x100 >> 2;
 }
 
-static const TypeInfo aspeed_pcie_phy_info = {
-    .name       = TYPE_ASPEED_PCIE_PHY,
-    .parent     = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedPCIEPhyState),
-    .class_init = aspeed_pcie_phy_class_init,
-    .class_size = sizeof(AspeedPCIEPhyClass),
-};
-
 static void aspeed_2700_pcie_phy_reset_hold(Object *obj, ResetType type)
 {
     AspeedPCIEPhyState *s = ASPEED_PCIE_PHY(obj);
@@ -961,21 +923,47 @@ static void aspeed_2700_pcie_phy_class_init(ObjectClass *klass,
     apc->nr_regs = 0x800 >> 2;
 }
 
-static const TypeInfo aspeed_2700_pcie_phy_info = {
-    .name       = TYPE_ASPEED_2700_PCIE_PHY,
-    .parent     = TYPE_ASPEED_PCIE_PHY,
-    .class_init = aspeed_2700_pcie_phy_class_init,
-};
+static const TypeInfo aspeed_pcie_types[] = {
+    {
+        .name = TYPE_ASPEED_PCIE_RC,
+        .parent = TYPE_PCIE_HOST_BRIDGE,
+        .instance_size = sizeof(AspeedPCIERcState),
+        .instance_init = aspeed_pcie_rc_instance_init,
+        .class_init = aspeed_pcie_rc_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_PCIE_ROOT_PORT,
+        .parent = TYPE_PCIE_ROOT_PORT,
+        .instance_size = sizeof(AspeedPCIERootPortState),
+        .class_init = aspeed_pcie_root_port_class_init,
+    },
+    {
+        .name       = TYPE_ASPEED_PCIE_CFG,
+        .parent     = TYPE_SYS_BUS_DEVICE,
+        .instance_init = aspeed_pcie_cfg_instance_init,
+        .instance_size = sizeof(AspeedPCIECfgState),
+        .class_init = aspeed_pcie_cfg_class_init,
+        .class_size = sizeof(AspeedPCIECfgClass),
+    },
+    {
+        .name       = TYPE_ASPEED_PCIE_PHY,
+        .parent     = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedPCIEPhyState),
+        .class_init = aspeed_pcie_phy_class_init,
+        .class_size = sizeof(AspeedPCIEPhyClass),
+    },
+    {
+        .name       = TYPE_ASPEED_2700_PCIE_PHY,
+        .parent     = TYPE_ASPEED_PCIE_PHY,
+        .class_init = aspeed_2700_pcie_phy_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_PCIE_CFG,
+        .parent = TYPE_ASPEED_PCIE_CFG,
+        .class_init = aspeed_2700_pcie_cfg_class_init,
+    }
 
-static void aspeed_pcie_register_types(void)
-{
-    type_register_static(&aspeed_pcie_rc_info);
-    type_register_static(&aspeed_pcie_root_port_info);
-    type_register_static(&aspeed_pcie_cfg_info);
-    type_register_static(&aspeed_2700_pcie_cfg_info);
-    type_register_static(&aspeed_pcie_phy_info);
-    type_register_static(&aspeed_2700_pcie_phy_info);
-}
+};
 
-type_init(aspeed_pcie_register_types);
+DEFINE_TYPES(aspeed_pcie_types)
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 22/24] hw/i2c/aspeed_i2c: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (20 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 21/24] hw/pci-host/aspeed_pcie: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 23/24] hw/net/ftgmac100: " Jamin Lin
                   ` (2 subsequent siblings)
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Alistair Francis, Peter Maydell, Cédric Le Goater,
	Steven Lee, Troy Lee, Kane Chen, Andrew Jeffery, Joel Stanley,
	Ninad Palsule, Jason Wang, open list:STM32F205,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 9 standalone TypeInfo variables (aspeed_i2c_bus_info,
aspeed_i2c_bus_slave_info, aspeed_i2c_info as abstract base,
aspeed_2400_i2c_info, aspeed_2500_i2c_info, aspeed_2600_i2c_info,
aspeed_1030_i2c_info and aspeed_2700_i2c_info) directly into the
'aspeed_i2c_types[]' array, removing the need for
separate declarations.

No functional change.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/i2c/aspeed_i2c.c | 113 +++++++++++++++++++-------------------------
 1 file changed, 48 insertions(+), 65 deletions(-)

diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
index 80c4457500..4a6732a185 100644
--- a/hw/i2c/aspeed_i2c.c
+++ b/hw/i2c/aspeed_i2c.c
@@ -1372,16 +1372,6 @@ static void aspeed_i2c_class_init(ObjectClass *klass, const void *data)
     dc->desc = "Aspeed I2C Controller";
 }
 
-static const TypeInfo aspeed_i2c_info = {
-    .name          = TYPE_ASPEED_I2C,
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_init = aspeed_i2c_instance_init,
-    .instance_size = sizeof(AspeedI2CState),
-    .class_init    = aspeed_i2c_class_init,
-    .class_size = sizeof(AspeedI2CClass),
-    .abstract   = true,
-};
-
 static int aspeed_i2c_bus_new_slave_event(AspeedI2CBus *bus,
                                           enum i2c_event event)
 {
@@ -1500,13 +1490,6 @@ static void aspeed_i2c_bus_slave_class_init(ObjectClass *klass,
     sc->send_async = aspeed_i2c_bus_slave_send_async;
 }
 
-static const TypeInfo aspeed_i2c_bus_slave_info = {
-    .name           = TYPE_ASPEED_I2C_BUS_SLAVE,
-    .parent         = TYPE_I2C_SLAVE,
-    .instance_size  = sizeof(AspeedI2CBusSlave),
-    .class_init     = aspeed_i2c_bus_slave_class_init,
-};
-
 static void aspeed_i2c_bus_reset_hold(Object *obj, ResetType type)
 {
     AspeedI2CBus *s = ASPEED_I2C_BUS(obj);
@@ -1565,13 +1548,6 @@ static void aspeed_i2c_bus_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_i2c_bus_properties);
 }
 
-static const TypeInfo aspeed_i2c_bus_info = {
-    .name           = TYPE_ASPEED_I2C_BUS,
-    .parent         = TYPE_SYS_BUS_DEVICE,
-    .instance_size  = sizeof(AspeedI2CBus),
-    .class_init     = aspeed_i2c_bus_class_init,
-};
-
 static qemu_irq aspeed_2400_i2c_bus_get_irq(AspeedI2CBus *bus)
 {
     return bus->controller->irq;
@@ -1605,12 +1581,6 @@ static void aspeed_2400_i2c_class_init(ObjectClass *klass, const void *data)
     aic->mem_size = 0x1000;
 }
 
-static const TypeInfo aspeed_2400_i2c_info = {
-    .name = TYPE_ASPEED_2400_I2C,
-    .parent = TYPE_ASPEED_I2C,
-    .class_init = aspeed_2400_i2c_class_init,
-};
-
 static qemu_irq aspeed_2500_i2c_bus_get_irq(AspeedI2CBus *bus)
 {
     return bus->controller->irq;
@@ -1640,12 +1610,6 @@ static void aspeed_2500_i2c_class_init(ObjectClass *klass, const void *data)
     aic->mem_size = 0x1000;
 }
 
-static const TypeInfo aspeed_2500_i2c_info = {
-    .name = TYPE_ASPEED_2500_I2C,
-    .parent = TYPE_ASPEED_I2C,
-    .class_init = aspeed_2500_i2c_class_init,
-};
-
 static qemu_irq aspeed_2600_i2c_bus_get_irq(AspeedI2CBus *bus)
 {
     return bus->irq;
@@ -1669,12 +1633,6 @@ static void aspeed_2600_i2c_class_init(ObjectClass *klass, const void *data)
     aic->mem_size = 0x1000;
 }
 
-static const TypeInfo aspeed_2600_i2c_info = {
-    .name = TYPE_ASPEED_2600_I2C,
-    .parent = TYPE_ASPEED_I2C,
-    .class_init = aspeed_2600_i2c_class_init,
-};
-
 static void aspeed_1030_i2c_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -1693,12 +1651,6 @@ static void aspeed_1030_i2c_class_init(ObjectClass *klass, const void *data)
     aic->mem_size = 0x10000;
 }
 
-static const TypeInfo aspeed_1030_i2c_info = {
-    .name = TYPE_ASPEED_1030_I2C,
-    .parent = TYPE_ASPEED_I2C,
-    .class_init = aspeed_1030_i2c_class_init,
-};
-
 static void aspeed_2700_i2c_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -1720,25 +1672,56 @@ static void aspeed_2700_i2c_class_init(ObjectClass *klass, const void *data)
     aic->has_dma64 = true;
 }
 
-static const TypeInfo aspeed_2700_i2c_info = {
-    .name = TYPE_ASPEED_2700_I2C,
-    .parent = TYPE_ASPEED_I2C,
-    .class_init = aspeed_2700_i2c_class_init,
+static const TypeInfo aspeed_i2c_types[] = {
+    {
+        .name           = TYPE_ASPEED_I2C_BUS,
+        .parent         = TYPE_SYS_BUS_DEVICE,
+        .instance_size  = sizeof(AspeedI2CBus),
+        .class_init     = aspeed_i2c_bus_class_init,
+    },
+    {
+        .name           = TYPE_ASPEED_I2C_BUS_SLAVE,
+        .parent         = TYPE_I2C_SLAVE,
+        .instance_size  = sizeof(AspeedI2CBusSlave),
+        .class_init     = aspeed_i2c_bus_slave_class_init,
+    },
+    {
+        .name          = TYPE_ASPEED_I2C,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_init = aspeed_i2c_instance_init,
+        .instance_size = sizeof(AspeedI2CState),
+        .class_init    = aspeed_i2c_class_init,
+        .class_size = sizeof(AspeedI2CClass),
+        .abstract   = true,
+    },
+    {
+        .name = TYPE_ASPEED_1030_I2C,
+        .parent = TYPE_ASPEED_I2C,
+        .class_init = aspeed_1030_i2c_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2400_I2C,
+        .parent = TYPE_ASPEED_I2C,
+        .class_init = aspeed_2400_i2c_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2500_I2C,
+        .parent = TYPE_ASPEED_I2C,
+        .class_init = aspeed_2500_i2c_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2600_I2C,
+        .parent = TYPE_ASPEED_I2C,
+        .class_init = aspeed_2600_i2c_class_init,
+    },
+    {
+        .name = TYPE_ASPEED_2700_I2C,
+        .parent = TYPE_ASPEED_I2C,
+        .class_init = aspeed_2700_i2c_class_init,
+    }
 };
 
-static void aspeed_i2c_register_types(void)
-{
-    type_register_static(&aspeed_i2c_bus_info);
-    type_register_static(&aspeed_i2c_bus_slave_info);
-    type_register_static(&aspeed_i2c_info);
-    type_register_static(&aspeed_2400_i2c_info);
-    type_register_static(&aspeed_2500_i2c_info);
-    type_register_static(&aspeed_2600_i2c_info);
-    type_register_static(&aspeed_1030_i2c_info);
-    type_register_static(&aspeed_2700_i2c_info);
-}
-
-type_init(aspeed_i2c_register_types)
+DEFINE_TYPES(aspeed_i2c_types)
 
 
 I2CBus *aspeed_i2c_get_bus(AspeedI2CState *s, int busnr)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 23/24] hw/net/ftgmac100: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (21 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 22/24] hw/i2c/aspeed_i2c: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  2:50 ` [PATCH v1 24/24] hw/ssi/aspeed_smc: " Jamin Lin
  2026-06-01  8:49 ` [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices " Cédric Le Goater
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 2 standalone TypeInfo variables (ftgmac100_info,
aspeed_mii_info) directly into the 'ftgmac100_types[]' array,
removing the need for separate declarations. Note that this file
covers both the Faraday FTGMAC100 Gigabit Ethernet controller and
the Aspeed MII controller, which share the same type registration.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/net/ftgmac100.c | 32 ++++++++++++++------------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c
index 2bec817b9d..a53c840c37 100644
--- a/hw/net/ftgmac100.c
+++ b/hw/net/ftgmac100.c
@@ -1279,12 +1279,6 @@ static void ftgmac100_class_init(ObjectClass *klass, const void *data)
     dc->desc = "Faraday FTGMAC100 Gigabit Ethernet emulation";
 }
 
-static const TypeInfo ftgmac100_info = {
-    .name = TYPE_FTGMAC100,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(FTGMAC100State),
-    .class_init = ftgmac100_class_init,
-};
 
 /*
  * AST2600 MII controller
@@ -1438,17 +1432,19 @@ static void aspeed_mii_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_mii_properties);
 }
 
-static const TypeInfo aspeed_mii_info = {
-    .name = TYPE_ASPEED_MII,
-    .parent = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(AspeedMiiState),
-    .class_init = aspeed_mii_class_init,
+static const TypeInfo ftgmac100_types[] = {
+    {
+        .name          = TYPE_FTGMAC100,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(FTGMAC100State),
+        .class_init    = ftgmac100_class_init,
+    },
+    {
+        .name          = TYPE_ASPEED_MII,
+        .parent        = TYPE_SYS_BUS_DEVICE,
+        .instance_size = sizeof(AspeedMiiState),
+        .class_init    = aspeed_mii_class_init,
+    }
 };
 
-static void ftgmac100_register_types(void)
-{
-    type_register_static(&ftgmac100_info);
-    type_register_static(&aspeed_mii_info);
-}
-
-type_init(ftgmac100_register_types)
+DEFINE_TYPES(ftgmac100_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v1 24/24] hw/ssi/aspeed_smc: Convert to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (22 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 23/24] hw/net/ftgmac100: " Jamin Lin
@ 2026-06-01  2:50 ` Jamin Lin
  2026-06-01  8:49 ` [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices " Cédric Le Goater
  24 siblings, 0 replies; 26+ messages in thread
From: Jamin Lin @ 2026-06-01  2:50 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Kane Chen, Andrew Jeffery, Joel Stanley, Alistair Francis,
	Ninad Palsule, Jason Wang, open list:ASPEED BMCs,
	open list:All patches CC here
  Cc: Jamin Lin, Troy Lee

Replace the legacy type_register_static()/type_init() registration
pattern with the modern DEFINE_TYPES() macro.

Inline 18 standalone TypeInfo variables (aspeed_smc_flash_info,
aspeed_smc_info as abstract base, aspeed_2400_smc_info,
aspeed_2400_fmc_info, aspeed_2400_spi1_info, aspeed_2500_fmc_info,
aspeed_2500_spi1_info, aspeed_2500_spi2_info, aspeed_2600_fmc_info,
aspeed_2600_spi1_info, aspeed_2600_spi2_info, aspeed_1030_fmc_info,
aspeed_1030_spi1_info, aspeed_1030_spi2_info, aspeed_2700_fmc_info,
aspeed_2700_spi0_info, aspeed_2700_spi1_info, aspeed_2700_spi2_info)
directly into the 'aspeed_smc_types[]' array, removing the need for
separate declarations.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 hw/ssi/aspeed_smc.c | 228 +++++++++++++++++++-------------------------
 1 file changed, 96 insertions(+), 132 deletions(-)

diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
index 3767ad0c7a..d87fbd798c 100644
--- a/hw/ssi/aspeed_smc.c
+++ b/hw/ssi/aspeed_smc.c
@@ -1312,16 +1312,6 @@ static void aspeed_smc_class_init(ObjectClass *klass, const void *data)
     dc->vmsd = &vmstate_aspeed_smc;
 }
 
-static const TypeInfo aspeed_smc_info = {
-    .name           = TYPE_ASPEED_SMC,
-    .parent         = TYPE_SYS_BUS_DEVICE,
-    .instance_init  = aspeed_smc_instance_init,
-    .instance_size  = sizeof(AspeedSMCState),
-    .class_size     = sizeof(AspeedSMCClass),
-    .class_init     = aspeed_smc_class_init,
-    .abstract       = true,
-};
-
 static void aspeed_smc_flash_realize(DeviceState *dev, Error **errp)
 {
     AspeedSMCFlash *s = ASPEED_SMC_FLASH(dev);
@@ -1358,13 +1348,6 @@ static void aspeed_smc_flash_class_init(ObjectClass *klass, const void *data)
     device_class_set_props(dc, aspeed_smc_flash_properties);
 }
 
-static const TypeInfo aspeed_smc_flash_info = {
-    .name           = TYPE_ASPEED_SMC_FLASH,
-    .parent         = TYPE_SYS_BUS_DEVICE,
-    .instance_size  = sizeof(AspeedSMCFlash),
-    .class_init     = aspeed_smc_flash_class_init,
-};
-
 /*
  * The Segment Registers of the AST2400 and AST2500 have a 8MB
  * unit. The address range of a flash SPI peripheral is encoded with
@@ -1415,12 +1398,6 @@ static void aspeed_2400_smc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2400_smc_info = {
-    .name =  "aspeed.smc-ast2400",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2400_smc_class_init,
-};
-
 static const uint32_t aspeed_2400_fmc_resets[ASPEED_SMC_R_MAX] = {
     /*
      * CE0 and CE1 types are HW strapped in SCU70. Do it here to
@@ -1466,12 +1443,6 @@ static void aspeed_2400_fmc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2400_fmc_info = {
-    .name =  "aspeed.fmc-ast2400",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2400_fmc_class_init,
-};
-
 static const AspeedSegments aspeed_2400_spi1_segments[] = {
     { 0x30000000, 64 * MiB },
 };
@@ -1506,12 +1477,6 @@ static void aspeed_2400_spi1_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2400_spi1_info = {
-    .name =  "aspeed.spi1-ast2400",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2400_spi1_class_init,
-};
-
 static const uint32_t aspeed_2500_fmc_resets[ASPEED_SMC_R_MAX] = {
     [R_CONF] = (CONF_FLASH_TYPE_SPI << CONF_FLASH_TYPE0 |
                 CONF_FLASH_TYPE_SPI << CONF_FLASH_TYPE1),
@@ -1552,12 +1517,6 @@ static void aspeed_2500_fmc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2500_fmc_info = {
-    .name =  "aspeed.fmc-ast2500",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2500_fmc_class_init,
-};
-
 static const AspeedSegments aspeed_2500_spi1_segments[] = {
     { 0x30000000, 32 * MiB }, /* start address is readonly */
     { 0x32000000, 96 * MiB }, /* end address is readonly */
@@ -1588,12 +1547,6 @@ static void aspeed_2500_spi1_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2500_spi1_info = {
-    .name =  "aspeed.spi1-ast2500",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2500_spi1_class_init,
-};
-
 static const AspeedSegments aspeed_2500_spi2_segments[] = {
     { 0x38000000, 32 * MiB }, /* start address is readonly */
     { 0x3A000000, 96 * MiB }, /* end address is readonly */
@@ -1624,12 +1577,6 @@ static void aspeed_2500_spi2_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2500_spi2_info = {
-    .name =  "aspeed.spi2-ast2500",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2500_spi2_class_init,
-};
-
 /*
  * The Segment Registers of the AST2600 have a 1MB unit. The address
  * range of a flash SPI peripheral is encoded with offsets in the overall
@@ -1712,12 +1659,6 @@ static void aspeed_2600_fmc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2600_fmc_info = {
-    .name =  "aspeed.fmc-ast2600",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2600_fmc_class_init,
-};
-
 static const AspeedSegments aspeed_2600_spi1_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -1752,12 +1693,6 @@ static void aspeed_2600_spi1_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2600_spi1_info = {
-    .name =  "aspeed.spi1-ast2600",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2600_spi1_class_init,
-};
-
 static const AspeedSegments aspeed_2600_spi2_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -1793,12 +1728,6 @@ static void aspeed_2600_spi2_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2600_spi2_info = {
-    .name =  "aspeed.spi2-ast2600",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2600_spi2_class_init,
-};
-
 /*
  * The FMC Segment Registers of the AST1030 have a 512KB unit.
  * Only bits [27:19] are used for decoding.
@@ -1877,12 +1806,6 @@ static void aspeed_1030_fmc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_1030_fmc_info = {
-    .name =  "aspeed.fmc-ast1030",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_1030_fmc_class_init,
-};
-
 static const AspeedSegments aspeed_1030_spi1_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -1916,11 +1839,6 @@ static void aspeed_1030_spi1_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_1030_spi1_info = {
-    .name =  "aspeed.spi1-ast1030",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_1030_spi1_class_init,
-};
 static const AspeedSegments aspeed_1030_spi2_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -1954,12 +1872,6 @@ static void aspeed_1030_spi2_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_1030_spi2_info = {
-    .name =  "aspeed.spi2-ast1030",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_1030_spi2_class_init,
-};
-
 /*
  * The FMC Segment Registers of the AST2700 have a 64KB unit.
  * Only bits [31:16] are used for decoding.
@@ -2061,12 +1973,6 @@ static void aspeed_2700_fmc_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_2700_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2700_fmc_info = {
-    .name =  "aspeed.fmc-ast2700",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2700_fmc_class_init,
-};
-
 static const AspeedSegments aspeed_2700_spi0_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 128 * MiB, 128 * MiB }, /* start address is readonly */
@@ -2102,12 +2008,6 @@ static void aspeed_2700_spi0_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_2700_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2700_spi0_info = {
-    .name =  "aspeed.spi0-ast2700",
-    .parent = TYPE_ASPEED_SMC,
-    .class_init = aspeed_2700_spi0_class_init,
-};
-
 static const AspeedSegments aspeed_2700_spi1_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -2142,12 +2042,6 @@ static void aspeed_2700_spi1_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_2700_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2700_spi1_info = {
-        .name =  "aspeed.spi1-ast2700",
-        .parent = TYPE_ASPEED_SMC,
-        .class_init = aspeed_2700_spi1_class_init,
-};
-
 static const AspeedSegments aspeed_2700_spi2_segments[] = {
     { 0x0, 128 * MiB }, /* start address is readonly */
     { 0x0, 0 }, /* disabled */
@@ -2182,32 +2076,102 @@ static void aspeed_2700_spi2_class_init(ObjectClass *klass, const void *data)
     asc->reg_ops           = &aspeed_2700_smc_flash_ops;
 }
 
-static const TypeInfo aspeed_2700_spi2_info = {
-        .name =  "aspeed.spi2-ast2700",
-        .parent = TYPE_ASPEED_SMC,
+static const TypeInfo aspeed_smc_types[] = {
+    {
+        .name           = TYPE_ASPEED_SMC_FLASH,
+        .parent         = TYPE_SYS_BUS_DEVICE,
+        .instance_size  = sizeof(AspeedSMCFlash),
+        .class_init     = aspeed_smc_flash_class_init,
+    },
+    {
+        .name           = TYPE_ASPEED_SMC,
+        .parent         = TYPE_SYS_BUS_DEVICE,
+        .instance_init  = aspeed_smc_instance_init,
+        .instance_size  = sizeof(AspeedSMCState),
+        .class_size     = sizeof(AspeedSMCClass),
+        .class_init     = aspeed_smc_class_init,
+        .abstract       = true,
+    },
+    {
+        .name       = "aspeed.fmc-ast1030",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_1030_fmc_class_init,
+    },
+    {
+        .name       = "aspeed.spi1-ast1030",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_1030_spi1_class_init,
+    },
+    {
+        .name       = "aspeed.spi2-ast1030",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_1030_spi2_class_init,
+    },
+    {
+        .name       = "aspeed.smc-ast2400",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2400_smc_class_init,
+    },
+    {
+        .name       = "aspeed.fmc-ast2400",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2400_fmc_class_init,
+    },
+    {
+        .name       = "aspeed.spi1-ast2400",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2400_spi1_class_init,
+    },
+    {
+        .name       = "aspeed.fmc-ast2500",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2500_fmc_class_init,
+    },
+    {
+        .name       = "aspeed.spi1-ast2500",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2500_spi1_class_init,
+    },
+    {
+        .name       = "aspeed.spi2-ast2500",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2500_spi2_class_init,
+    },
+    {
+        .name       = "aspeed.fmc-ast2600",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2600_fmc_class_init,
+    },
+    {
+        .name       = "aspeed.spi1-ast2600",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2600_spi1_class_init,
+    },
+    {
+        .name       = "aspeed.spi2-ast2600",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2600_spi2_class_init,
+    },
+    {
+        .name       = "aspeed.fmc-ast2700",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2700_fmc_class_init,
+    },
+    {
+        .name       = "aspeed.spi0-ast2700",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2700_spi0_class_init,
+    },
+    {
+        .name       = "aspeed.spi1-ast2700",
+        .parent     = TYPE_ASPEED_SMC,
+        .class_init = aspeed_2700_spi1_class_init,
+    },
+    {
+        .name       = "aspeed.spi2-ast2700",
+        .parent     = TYPE_ASPEED_SMC,
         .class_init = aspeed_2700_spi2_class_init,
+    }
 };
 
-static void aspeed_smc_register_types(void)
-{
-    type_register_static(&aspeed_smc_flash_info);
-    type_register_static(&aspeed_smc_info);
-    type_register_static(&aspeed_2400_smc_info);
-    type_register_static(&aspeed_2400_fmc_info);
-    type_register_static(&aspeed_2400_spi1_info);
-    type_register_static(&aspeed_2500_fmc_info);
-    type_register_static(&aspeed_2500_spi1_info);
-    type_register_static(&aspeed_2500_spi2_info);
-    type_register_static(&aspeed_2600_fmc_info);
-    type_register_static(&aspeed_2600_spi1_info);
-    type_register_static(&aspeed_2600_spi2_info);
-    type_register_static(&aspeed_1030_fmc_info);
-    type_register_static(&aspeed_1030_spi1_info);
-    type_register_static(&aspeed_1030_spi2_info);
-    type_register_static(&aspeed_2700_fmc_info);
-    type_register_static(&aspeed_2700_spi0_info);
-    type_register_static(&aspeed_2700_spi1_info);
-    type_register_static(&aspeed_2700_spi2_info);
-}
-
-type_init(aspeed_smc_register_types)
+DEFINE_TYPES(aspeed_smc_types)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo
  2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
                   ` (23 preceding siblings ...)
  2026-06-01  2:50 ` [PATCH v1 24/24] hw/ssi/aspeed_smc: " Jamin Lin
@ 2026-06-01  8:49 ` Cédric Le Goater
  24 siblings, 0 replies; 26+ messages in thread
From: Cédric Le Goater @ 2026-06-01  8:49 UTC (permalink / raw)
  To: Jamin Lin, Peter Maydell, Steven Lee, Troy Lee, Kane Chen,
	Andrew Jeffery, Joel Stanley, Alistair Francis, Ninad Palsule,
	Jason Wang, open list:ASPEED BMCs, open list:All patches CC here
  Cc: Troy Lee

On 6/1/26 04:50, Jamin Lin wrote:
> The QEMU community now prefers the DEFINE_TYPES() macro over the legacy
> type_register_static()/type_init() pattern for device type registration.
> DEFINE_TYPES() accepts an array of TypeInfo structs and registers them
> all in a single call, making the registration code more concise and
> consistent with modern QEMU coding style.
> 
> This series converts all Aspeed device models to use DEFINE_TYPES() and
> further inlines the individual static TypeInfo variable declarations
> directly into the types array, eliminating the need for standalone
> TypeInfo variables scattered throughout each file.
> 
> v1:
>    The changes are purely mechanical refactoring with no functional
>    difference. The 24 patches cover all Aspeed-related device models
>    across hw/adc, hw/arm, hw/fsi, hw/gpio, hw/i2c, hw/intc, hw/misc,
>    hw/net, hw/nvram, hw/pci-host, hw/rtc, hw/ssi, hw/timer and
>    hw/watchdog.
> 
> Jamin Lin (24):
>    hw/misc/aspeed_hace: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_lpc: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_ltpi: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_pwm: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_sbc: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_scu: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_sdmc: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc:aspeed_sli: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/misc/aspeed_xdma: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/adc/aspeed_adc: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/arm/aspeed_ast1700: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/gpio/aspeed_gpio: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/gpio/aspeed_sgpio: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/intc/aspeed_intc: convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/intc/aspeed_vic: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/rtc/aspeed_rtc: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/watchdog/wdt_aspeed: Convert to DEFINE_TYPES() with inlined
>      TypeInfo
>    hw/nvram/aspeed_otp: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/timer/aspeed_timer: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/fsi/aspeed_apb2opb: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/pci-host/aspeed_pcie: Convert to DEFINE_TYPES() with inlined
>      TypeInfo
>    hw/i2c/aspeed_i2c: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/net/ftgmac100: Convert to DEFINE_TYPES() with inlined TypeInfo
>    hw/ssi/aspeed_smc: Convert to DEFINE_TYPES() with inlined TypeInfo
> 
>   hw/adc/aspeed_adc.c       |  95 +++++++---------
>   hw/arm/aspeed_ast1700.c   |  21 ++--
>   hw/fsi/aspeed_apb2opb.c   |  42 +++----
>   hw/gpio/aspeed_gpio.c     | 107 ++++++++----------
>   hw/gpio/aspeed_sgpio.c    |  37 +++----
>   hw/i2c/aspeed_i2c.c       | 113 ++++++++-----------
>   hw/intc/aspeed_intc.c     | 121 +++++++++-----------
>   hw/intc/aspeed_vic.c      |  19 ++--
>   hw/misc/aspeed_hace.c     |  81 ++++++--------
>   hw/misc/aspeed_lpc.c      |  21 ++--
>   hw/misc/aspeed_ltpi.c     |  19 ++--
>   hw/misc/aspeed_pwm.c      |  19 ++--
>   hw/misc/aspeed_sbc.c      |  46 ++++----
>   hw/misc/aspeed_scu.c      | 107 ++++++++----------
>   hw/misc/aspeed_sdmc.c     |  73 ++++++------
>   hw/misc/aspeed_sli.c      |  44 ++++----
>   hw/misc/aspeed_xdma.c     |  58 +++++-----
>   hw/net/ftgmac100.c        |  32 +++---
>   hw/nvram/aspeed_otp.c     |  19 ++--
>   hw/pci-host/aspeed_pcie.c |  94 +++++++---------
>   hw/rtc/aspeed_rtc.c       |  19 ++--
>   hw/ssi/aspeed_smc.c       | 228 ++++++++++++++++----------------------
>   hw/timer/aspeed_timer.c   |  83 ++++++--------
>   hw/watchdog/wdt_aspeed.c  |  93 +++++++---------
>   24 files changed, 678 insertions(+), 913 deletions(-)
> 

Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.



^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2026-06-01  8:50 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-01  2:50 [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices to DEFINE_TYPES() with inlined TypeInfo Jamin Lin
2026-06-01  2:50 ` [PATCH v1 01/24] hw/misc/aspeed_hace: Convert " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 02/24] hw/misc/aspeed_lpc: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 03/24] hw/misc/aspeed_ltpi: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 04/24] hw/misc/aspeed_pwm: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 05/24] hw/misc/aspeed_sbc: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 06/24] hw/misc/aspeed_scu: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 07/24] hw/misc/aspeed_sdmc: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 08/24] hw/misc:aspeed_sli: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 09/24] hw/misc/aspeed_xdma: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 10/24] hw/adc/aspeed_adc: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 11/24] hw/arm/aspeed_ast1700: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 12/24] hw/gpio/aspeed_gpio: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 13/24] hw/gpio/aspeed_sgpio: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 14/24] hw/intc/aspeed_intc: convert " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 15/24] hw/intc/aspeed_vic: Convert " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 16/24] hw/rtc/aspeed_rtc: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 17/24] hw/watchdog/wdt_aspeed: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 18/24] hw/nvram/aspeed_otp: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 19/24] hw/timer/aspeed_timer: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 20/24] hw/fsi/aspeed_apb2opb: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 21/24] hw/pci-host/aspeed_pcie: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 22/24] hw/i2c/aspeed_i2c: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 23/24] hw/net/ftgmac100: " Jamin Lin
2026-06-01  2:50 ` [PATCH v1 24/24] hw/ssi/aspeed_smc: " Jamin Lin
2026-06-01  8:49 ` [PATCH v1 00/24] hw/aspeed: Convert all Aspeed devices " Cédric Le Goater

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.