diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index cba4999e6d0..4436c2ce0cc 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -1766,12 +1766,12 @@ static void e1000_register_types(void)
     type_register_static(&e1000_base_info);
     for (i = 0; i < ARRAY_SIZE(e1000_devices); i++) {
         const E1000Info *info = &e1000_devices[i];
-        TypeInfo type_info = {};
-
-        type_info.name = info->name;
-        type_info.parent = TYPE_E1000_BASE;
-        type_info.class_data = info;
-        type_info.class_init = e1000_class_init;
+        const TypeInfo type_info = {
+            .name       = info->name,
+            .parent     = TYPE_E1000_BASE,
+            .class_data = info,
+            .class_init = e1000_class_init,
+        };
 
         type_register_static(&type_info);
     }
diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
index 9e2f6563a0a..152208d931e 100644
--- a/hw/rtc/m48t59-isa.c
+++ b/hw/rtc/m48t59-isa.c
@@ -51,7 +51,7 @@ struct M48txxISADeviceClass {
     M48txxInfo info;
 };
 
-static M48txxInfo m48txx_isa_info[] = {
+static const M48txxInfo m48txx_isa_info[] = {
     {
         .bus_name = "isa-m48t59",
         .model = 59,
@@ -148,18 +148,18 @@ static const TypeInfo m48txx_isa_type_info = {
 
 static void m48t59_isa_register_types(void)
 {
-    TypeInfo isa_type_info = {
-        .parent = TYPE_M48TXX_ISA,
-        .class_size = sizeof(M48txxISADeviceClass),
-        .class_init = m48txx_isa_concrete_class_init,
-    };
-    int i;
-
     type_register_static(&m48txx_isa_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(m48txx_isa_info); i++) {
-        isa_type_info.name = m48txx_isa_info[i].bus_name;
-        isa_type_info.class_data = &m48txx_isa_info[i];
+    for (unsigned i = 0; i < ARRAY_SIZE(m48txx_isa_info); i++) {
+        const M48txxInfo *info = &m48txx_isa_info[i];
+        const TypeInfo isa_type_info = {
+            .name       = info->bus_name,
+            .parent     = TYPE_M48TXX_ISA,
+            .class_size = sizeof(M48txxISADeviceClass),
+            .class_init = m48txx_isa_concrete_class_init,
+            .class_data = info,
+        };
+
         type_register_static(&isa_type_info);
     }
 }
diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c
index 68be2dad6f3..967331401a7 100644
--- a/hw/rtc/m48t59.c
+++ b/hw/rtc/m48t59.c
@@ -66,7 +66,7 @@ struct M48txxSysBusDeviceClass {
     M48txxInfo info;
 };
 
-static M48txxInfo m48txx_sysbus_info[] = {
+static const M48txxInfo m48txx_sysbus_info[] = {
     {
         .bus_name = "sysbus-m48t02",
         .model = 2,
@@ -666,19 +666,19 @@ static const TypeInfo m48txx_sysbus_type_info = {
 
 static void m48t59_register_types(void)
 {
-    TypeInfo sysbus_type_info = {
-        .parent = TYPE_M48TXX_SYS_BUS,
-        .class_size = sizeof(M48txxSysBusDeviceClass),
-        .class_init = m48txx_sysbus_concrete_class_init,
-    };
-    int i;
-
     type_register_static(&nvram_info);
     type_register_static(&m48txx_sysbus_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(m48txx_sysbus_info); i++) {
-        sysbus_type_info.name = m48txx_sysbus_info[i].bus_name;
-        sysbus_type_info.class_data = &m48txx_sysbus_info[i];
+    for (unsigned i = 0; i < ARRAY_SIZE(m48txx_sysbus_info); i++) {
+        const M48txxInfo *info = &m48txx_sysbus_info[i];
+        const TypeInfo sysbus_type_info = {
+            .name       = info->bus_name,
+            .parent     = TYPE_M48TXX_SYS_BUS,
+            .class_size = sizeof(M48txxSysBusDeviceClass),
+            .class_init = m48txx_sysbus_concrete_class_init,
+            .class_data = info,
+        };
+
         type_register_static(&sysbus_type_info);
     }
 }
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 03cd837b44f..ccd87fb0604 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2490,7 +2490,7 @@ typedef struct MegasasInfo {
     const InterfaceInfo *interfaces;
 } MegasasInfo;
 
-static struct MegasasInfo megasas_devices[] = {
+static const struct MegasasInfo megasas_devices[] = {
     {
         .name = TYPE_MEGASAS_GEN1,
         .desc = "LSI MegaRAID SAS 1078",
@@ -2569,13 +2569,13 @@ static void megasas_register_types(void)
     type_register_static(&megasas_info);
     for (i = 0; i < ARRAY_SIZE(megasas_devices); i++) {
         const MegasasInfo *info = &megasas_devices[i];
-        TypeInfo type_info = {};
-
-        type_info.name = info->name;
-        type_info.parent = TYPE_MEGASAS_BASE;
-        type_info.class_data = info;
-        type_info.class_init = megasas_class_init;
-        type_info.interfaces = info->interfaces;
+        const TypeInfo type_info = {
+            .name       = info->name,
+            .parent     = TYPE_MEGASAS_BASE,
+            .class_data = info,
+            .class_init = megasas_class_init,
+            .interfaces = info->interfaces,
+        };
 
         type_register_static(&type_info);
     }
diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index 38ad3406b32..5a96c15c67c 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -193,7 +193,7 @@ static void ehci_data_class_init(ObjectClass *klass, const void *data)
     }
 }
 
-static struct EHCIPCIInfo ehci_pci_info[] = {
+static const struct EHCIPCIInfo ehci_pci_info[] = {
     {
         .name      = "usb-ehci",
         .vendor_id = PCI_VENDOR_ID_INTEL,
@@ -216,17 +216,17 @@ static struct EHCIPCIInfo ehci_pci_info[] = {
 
 static void ehci_pci_register_types(void)
 {
-    TypeInfo ehci_type_info = {
-        .parent        = TYPE_PCI_EHCI,
-        .class_init    = ehci_data_class_init,
-    };
-    int i;
-
     type_register_static(&ehci_pci_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(ehci_pci_info); i++) {
-        ehci_type_info.name = ehci_pci_info[i].name;
-        ehci_type_info.class_data = ehci_pci_info + i;
+    for (unsigned i = 0; i < ARRAY_SIZE(ehci_pci_info); i++) {
+        const EHCIPCIInfo *info = &ehci_pci_info[i];
+        const TypeInfo ehci_type_info = {
+            .name       = info->name,
+            .parent     = TYPE_PCI_EHCI,
+            .class_data = info,
+            .class_init = ehci_data_class_init,
+        };
+
         type_register_static(&ehci_type_info);
     }
 }
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 4822c704f69..9c671f53684 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1309,7 +1309,7 @@ void uhci_data_class_init(ObjectClass *klass, const void *data)
     u->info = *info;
 }
 
-static UHCIInfo uhci_info[] = {
+static const UHCIInfo uhci_info[] = {
     {
         .name      = TYPE_PIIX3_USB_UHCI,
         .vendor_id = PCI_VENDOR_ID_INTEL,
@@ -1371,17 +1371,17 @@ static UHCIInfo uhci_info[] = {
 
 static void uhci_register_types(void)
 {
-    TypeInfo uhci_type_info = {
-        .parent        = TYPE_UHCI,
-        .class_init    = uhci_data_class_init,
-    };
-    int i;
-
     type_register_static(&uhci_pci_type_info);
 
-    for (i = 0; i < ARRAY_SIZE(uhci_info); i++) {
-        uhci_type_info.name = uhci_info[i].name;
-        uhci_type_info.class_data = uhci_info + i;
+    for (unsigned i = 0; i < ARRAY_SIZE(uhci_info); i++) {
+        const UHCIInfo *info = &uhci_info[i];
+        const TypeInfo uhci_type_info = {
+            .name       = info->name,
+            .parent     = TYPE_UHCI,
+            .class_data = info,
+            .class_init = uhci_data_class_init,
+        };
+
         type_register_static(&uhci_type_info);
     }
 }
diff --git a/hw/usb/vt82c686-uhci-pci.c b/hw/usb/vt82c686-uhci-pci.c
index 61628061722..cd5ca9c8850 100644
--- a/hw/usb/vt82c686-uhci-pci.c
+++ b/hw/usb/vt82c686-uhci-pci.c
@@ -26,7 +26,7 @@ static void usb_uhci_vt82c686b_realize(PCIDevice *dev, Error **errp)
     s->irq = qemu_allocate_irq(uhci_isa_set_irq, s, 0);
 }
 
-static UHCIInfo uhci_info[] = {
+static const UHCIInfo uhci_info[] = {
     {
         .name      = TYPE_VT82C686B_USB_UHCI,
         .vendor_id = PCI_VENDOR_ID_VIA,
@@ -37,14 +37,14 @@ static UHCIInfo uhci_info[] = {
         .unplug    = true,
         /* Reason: only works as USB function of VT82xx superio chips */
         .notuser   = true,
-    }
+    },
 };
 
 static const TypeInfo vt82c686b_usb_uhci_type_info = {
     .parent         = TYPE_UHCI,
     .name           = TYPE_VT82C686B_USB_UHCI,
     .class_init     = uhci_data_class_init,
-    .class_data     = uhci_info,
+    .class_data     = &uhci_info[0],
 };
 
 static void vt82c686b_usb_uhci_register_types(void)
