hw/arm/imx8mp-evk: Introduce FslImx8mpEvkState
Introduce class FslImx8mpEvkState which will be needed for holding CanBusState attributes and associated properties. Signed-off-by: Bernhard Beschow <shentey@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Acked-by: Pavel Pisa <pisa@fel.cvut.cz> Tested-by: Pavel Pisa <pisa@fel.cvut.cz> Message-ID: <20260702184038.178196-5-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Bernhard Beschow committed
Jul 2, 2026 at 20:40 UTC
8099d86d35be4b743d456e7b7933e1e5c62a869e
1 file changed
+20
-10
hw/arm/imx8mp-evk.c
+20
-10
@@ -19,6 +19,17 @@
19
#include "qapi/error.h"
20
#include <libfdt.h>
21
22
+#define TYPE_IMX8MPEVK_MACHINE MACHINE_TYPE_NAME("imx8mp-evk")
23
+OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpEvkState, IMX8MPEVK_MACHINE)
24
+
25
+struct FslImx8mpEvkState {
26
+ MachineState parent_obj;
27
+
28
+ FslImx8mpState soc;
29
+
30
+ struct arm_boot_info boot_info;
31
+};
32
+
33
static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)
34
{
35
int i, offset;
@@ -57,8 +68,7 @@ static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)
68
69
static void imx8mp_evk_init(MachineState *machine)
70
{
60
- static struct arm_boot_info boot_info;
61
- FslImx8mpState *s;
71
+ FslImx8mpEvkState *s = IMX8MPEVK_MACHINE(machine);
72
73
if (machine->ram_size > FSL_IMX8MP_RAM_SIZE_MAX) {
74
error_report("RAM size " RAM_ADDR_FMT " above max supported (%08" PRIx64 ")",
@@ -66,7 +76,7 @@ static void imx8mp_evk_init(MachineState *machine)
76
exit(1);
77
}
78
69
- boot_info = (struct arm_boot_info) {
79
+ s->boot_info = (struct arm_boot_info) {
80
.loader_start = FSL_IMX8MP_RAM_START,
81
.board_id = -1,
82
.ram_size = machine->ram_size,
@@ -74,10 +84,9 @@ static void imx8mp_evk_init(MachineState *machine)
84
.modify_dtb = imx8mp_evk_modify_dtb,
85
};
86
77
- s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP));
78
- object_property_add_child(OBJECT(machine), "soc", OBJECT(s));
79
- object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
80
- sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);
87
+ object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX8MP);
88
+ object_property_set_uint(OBJECT(&s->soc), "fec1-phy-num", 1, &error_fatal);
89
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal);
90
91
memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START,
92
machine->ram);
@@ -93,14 +102,14 @@ static void imx8mp_evk_init(MachineState *machine)
102
}
103
104
blk = blk_by_legacy_dinfo(di);
96
- bus = qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus");
105
+ bus = qdev_get_child_bus(DEVICE(&s->soc.usdhc[i]), "sd-bus");
106
carddev = qdev_new(TYPE_SD_CARD);
107
qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal);
108
qdev_realize_and_unref(carddev, bus, &error_fatal);
109
}
110
111
if (!qtest_enabled()) {
103
- arm_load_kernel(&s->cpu[0], machine, &boot_info);
112
+ arm_load_kernel(&s->soc.cpu[0], machine, &s->boot_info);
113
}
114
}
115
@@ -128,9 +137,10 @@ static void imx8mp_evk_machine_class_init(ObjectClass *oc, const void *data)
137
138
static const TypeInfo imx8mp_evk_machine_types[] = {
139
{
131
- .name = MACHINE_TYPE_NAME("imx8mp-evk"),
140
+ .name = TYPE_IMX8MPEVK_MACHINE,
141
.parent = TYPE_MACHINE,
142
.class_init = imx8mp_evk_machine_class_init,
143
+ .instance_size = sizeof(FslImx8mpEvkState),
144
.interfaces = aarch64_machine_interfaces,
145
},
146
};