diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
index 38522cf0ba..96683b188c 100644
--- a/hw/audio/ac97.c
+++ b/hw/audio/ac97.c
@@ -1426,10 +1426,10 @@ static const TypeInfo ac97_info = {
         { },
     },
 };
+TYPE_INFO(ac97_info)
 
 static void ac97_register_types (void)
 {
-    type_register_static (&ac97_info);
     deprecated_register_soundhw("ac97", "Intel 82801AA AC97 Audio",
                                 0, TYPE_AC97);
 }
diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c
index 65dff5b6fc..671f99a2e1 100644
--- a/hw/audio/adlib.c
+++ b/hw/audio/adlib.c
@@ -318,10 +318,10 @@ static const TypeInfo adlib_info = {
     .instance_size = sizeof (AdlibState),
     .class_init    = adlib_class_initfn,
 };
+TYPE_INFO(adlib_info)
 
 static void adlib_register_types (void)
 {
-    type_register_static (&adlib_info);
     deprecated_register_soundhw("adlib", ADLIB_DESC, 1, TYPE_ADLIB);
 }
 
diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c
index 59705a8d47..176a96ffb3 100644
--- a/hw/audio/cs4231a.c
+++ b/hw/audio/cs4231a.c
@@ -710,10 +710,10 @@ static const TypeInfo cs4231a_info = {
     .instance_init = cs4231a_initfn,
     .class_init    = cs4231a_class_initfn,
 };
+TYPE_INFO(cs4231a_info)
 
 static void cs4231a_register_types (void)
 {
-    type_register_static (&cs4231a_info);
     deprecated_register_soundhw("cs4231a", "CS4231A", 1, TYPE_CS4231A);
 }
 
diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c
index 4255463a49..8c924946bd 100644
--- a/hw/audio/es1370.c
+++ b/hw/audio/es1370.c
@@ -918,10 +918,10 @@ static const TypeInfo es1370_info = {
         { },
     },
 };
+TYPE_INFO(es1370_info)
 
 static void es1370_register_types (void)
 {
-    type_register_static (&es1370_info);
     deprecated_register_soundhw("es1370", "ENSONIQ AudioPCI ES1370",
                                 0, TYPE_ES1370);
 }
diff --git a/hw/audio/gus.c b/hw/audio/gus.c
index 7e4a8cadad..3f2733d168 100644
--- a/hw/audio/gus.c
+++ b/hw/audio/gus.c
@@ -312,10 +312,10 @@ static const TypeInfo gus_info = {
     .instance_size = sizeof (GUSState),
     .class_init    = gus_class_initfn,
 };
+TYPE_INFO(gus_info)
 
 static void gus_register_types (void)
 {
-    type_register_static (&gus_info);
     deprecated_register_soundhw("gus", "Gravis Ultrasound GF1", 1, TYPE_GUS);
 }
 
diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c
index 2d9e50f99b..79984de7b9 100644
--- a/hw/audio/sb16.c
+++ b/hw/audio/sb16.c
@@ -1443,10 +1443,10 @@ static const TypeInfo sb16_info = {
     .instance_init = sb16_initfn,
     .class_init    = sb16_class_initfn,
 };
+TYPE_INFO(sb16_info)
 
 static void sb16_register_types (void)
 {
-    type_register_static (&sb16_info);
     deprecated_register_soundhw("sb16", "Creative Sound Blaster 16",
                                 1, TYPE_SB16);
 }
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index f9a13e0a44..0d3dff02c4 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -539,10 +539,6 @@ static const TypeInfo ipmi_bmc_extern_type = {
     .instance_finalize = ipmi_bmc_extern_finalize,
     .class_init    = ipmi_bmc_extern_class_init,
  };
+TYPE_INFO(ipmi_bmc_extern_type)
 
-static void ipmi_bmc_extern_register_types(void)
-{
-    type_register_static(&ipmi_bmc_extern_type);
-}
 
-type_init(ipmi_bmc_extern_register_types)
diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c
index be89a93876..76f6ae9d23 100644
--- a/hw/sd/milkymist-memcard.c
+++ b/hw/sd/milkymist-memcard.c
@@ -311,6 +311,7 @@ static const TypeInfo milkymist_memcard_info = {
     .instance_init = milkymist_memcard_init,
     .class_init    = milkymist_memcard_class_init,
 };
+TYPE_INFO(milkymist_memcard_info)
 
 static void milkymist_sdbus_class_init(ObjectClass *klass, void *data)
 {
@@ -326,11 +327,6 @@ static const TypeInfo milkymist_sdbus_info = {
     .instance_size = sizeof(SDBus),
     .class_init = milkymist_sdbus_class_init,
 };
+TYPE_INFO(milkymist_sdbus_info)
 
-static void milkymist_memcard_register_types(void)
-{
-    type_register_static(&milkymist_memcard_info);
-    type_register_static(&milkymist_sdbus_info);
-}
 
-type_init(milkymist_memcard_register_types)
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 579d68ad83..5153959b1d 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -526,6 +526,7 @@ static const TypeInfo pl181_info = {
     .instance_init = pl181_init,
     .class_init    = pl181_class_init,
 };
+TYPE_INFO(pl181_info)
 
 static void pl181_bus_class_init(ObjectClass *klass, void *data)
 {
@@ -541,11 +542,6 @@ static const TypeInfo pl181_bus_info = {
     .instance_size = sizeof(SDBus),
     .class_init = pl181_bus_class_init,
 };
+TYPE_INFO(pl181_bus_info)
 
-static void pl181_register_types(void)
-{
-    type_register_static(&pl181_info);
-    type_register_static(&pl181_bus_info);
-}
 
-type_init(pl181_register_types)
