20
#include "qapi/error.h"
21
#include <libfdt.h>
22
23
+#define TYPE_IMX8MM_EVK_MACHINE MACHINE_TYPE_NAME("imx8mm-evk")
24
+OBJECT_DECLARE_SIMPLE_TYPE(Imx8mmEvkMachineState, IMX8MM_EVK_MACHINE)
25
+
26
+struct Imx8mmEvkMachineState {
27
+ MachineState parent;
28
+
29
+ struct arm_boot_info bootinfo;
30
+};
31
+
32
static void imx8mm_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)
33
{
34
int i, offset;
69
70
static void imx8mm_evk_init(MachineState *machine)
71
{
63
- static struct arm_boot_info boot_info;
72
+ Imx8mmEvkMachineState *ims = IMX8MM_EVK_MACHINE(machine);
73
FslImx8mmState *s;
74
75
if (machine->ram_size > FSL_IMX8MM_RAM_SIZE_MAX) {
78
exit(1);
79
}
80
72
- boot_info = (struct arm_boot_info) {
73
- .loader_start = FSL_IMX8MM_RAM_START,
74
- .board_id = -1,
75
- .ram_size = machine->ram_size,
76
- .psci_conduit = QEMU_PSCI_CONDUIT_SMC,
77
- .modify_dtb = imx8mm_evk_modify_dtb,
78
- };
81
+ ims->bootinfo.loader_start = FSL_IMX8MM_RAM_START;
82
+ ims->bootinfo.board_id = -1;
83
+ ims->bootinfo.ram_size = machine->ram_size;
84
+ ims->bootinfo.psci_conduit = QEMU_PSCI_CONDUIT_SMC;
85
+ ims->bootinfo.modify_dtb = imx8mm_evk_modify_dtb;
86
87
s = FSL_IMX8MM(object_new_with_props(TYPE_FSL_IMX8MM, OBJECT(machine),
88
"soc", &error_fatal, NULL));
110
}
111
112
if (!qtest_enabled()) {
106
- arm_load_kernel(&s->cpu[0], machine, &boot_info);
113
+ arm_load_kernel(&s->cpu[0], machine, &ims->bootinfo);
114
}
115
}
116
134
mc->get_default_cpu_type = imx8mm_evk_get_default_cpu_type;
135
}
136
130
-DEFINE_MACHINE_AARCH64("imx8mm-evk", imx8mm_evk_machine_init)
137
+DEFINE_MACHINE_EXTENDED("imx8mm-evk", MACHINE, Imx8mmEvkMachineState,
138
+ imx8mm_evk_machine_init, false,
139
+ aarch64_machine_interfaces)