From 8099d86d35be4b743d456e7b7933e1e5c62a869e Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Thu, 2 Jul 2026 20:40:37 +0200 Subject: [PATCH] hw/arm/imx8mp-evk: Introduce FslImx8mpEvkState MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce class FslImx8mpEvkState which will be needed for holding CanBusState attributes and associated properties. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daudé Acked-by: Pavel Pisa Tested-by: Pavel Pisa Message-ID: <20260702184038.178196-5-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/imx8mp-evk.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 4a0c9df76b..ca0ee2d3f2 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -19,6 +19,17 @@ #include "qapi/error.h" #include +#define TYPE_IMX8MPEVK_MACHINE MACHINE_TYPE_NAME("imx8mp-evk") +OBJECT_DECLARE_SIMPLE_TYPE(FslImx8mpEvkState, IMX8MPEVK_MACHINE) + +struct FslImx8mpEvkState { + MachineState parent_obj; + + FslImx8mpState soc; + + struct arm_boot_info boot_info; +}; + static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *fdt) { int i, offset; @@ -57,8 +68,7 @@ static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *fdt) static void imx8mp_evk_init(MachineState *machine) { - static struct arm_boot_info boot_info; - FslImx8mpState *s; + FslImx8mpEvkState *s = IMX8MPEVK_MACHINE(machine); if (machine->ram_size > FSL_IMX8MP_RAM_SIZE_MAX) { error_report("RAM size " RAM_ADDR_FMT " above max supported (%08" PRIx64 ")", @@ -66,7 +76,7 @@ static void imx8mp_evk_init(MachineState *machine) exit(1); } - boot_info = (struct arm_boot_info) { + s->boot_info = (struct arm_boot_info) { .loader_start = FSL_IMX8MP_RAM_START, .board_id = -1, .ram_size = machine->ram_size, @@ -74,10 +84,9 @@ static void imx8mp_evk_init(MachineState *machine) .modify_dtb = imx8mp_evk_modify_dtb, }; - s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP)); - object_property_add_child(OBJECT(machine), "soc", OBJECT(s)); - object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal); - sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); + object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX8MP); + object_property_set_uint(OBJECT(&s->soc), "fec1-phy-num", 1, &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal); memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START, machine->ram); @@ -93,14 +102,14 @@ static void imx8mp_evk_init(MachineState *machine) } blk = blk_by_legacy_dinfo(di); - bus = qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus"); + bus = qdev_get_child_bus(DEVICE(&s->soc.usdhc[i]), "sd-bus"); carddev = qdev_new(TYPE_SD_CARD); qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal); qdev_realize_and_unref(carddev, bus, &error_fatal); } if (!qtest_enabled()) { - arm_load_kernel(&s->cpu[0], machine, &boot_info); + arm_load_kernel(&s->soc.cpu[0], machine, &s->boot_info); } } @@ -128,9 +137,10 @@ static void imx8mp_evk_machine_class_init(ObjectClass *oc, const void *data) static const TypeInfo imx8mp_evk_machine_types[] = { { - .name = MACHINE_TYPE_NAME("imx8mp-evk"), + .name = TYPE_IMX8MPEVK_MACHINE, .parent = TYPE_MACHINE, .class_init = imx8mp_evk_machine_class_init, + .instance_size = sizeof(FslImx8mpEvkState), .interfaces = aarch64_machine_interfaces, }, };