Deriving from TYPE_SYS_BUS_DEVICE fixes the SoC object to be reset upon machine reset.
Signed-off-by: Bernhard Beschow <[email protected]> --- include/hw/arm/fsl-imx7.h | 5 ++--- hw/arm/fsl-imx7.c | 5 +---- hw/arm/mcimx7d-sabre.c | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h index a573e0dd4f..945d8c5ad7 100644 --- a/include/hw/arm/fsl-imx7.h +++ b/include/hw/arm/fsl-imx7.h @@ -37,6 +37,7 @@ #include "hw/pci-host/designware.h" #include "hw/usb/chipidea.h" #include "hw/core/or-irq.h" +#include "hw/core/sysbus.h" #include "target/arm/cpu.h" #include "qom/object.h" #include "qemu/units.h" @@ -64,10 +65,8 @@ enum FslIMX7Configuration { }; struct FslIMX7State { - /*< private >*/ - DeviceState parent_obj; + SysBusDevice parent_obj; - /*< public >*/ ARMCPU cpu[FSL_IMX7_NUM_CPUS]; A15MPPrivState a7mpcore; IMXGPTState gpt[FSL_IMX7_NUM_GPTS]; diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index 2defa498d3..fc5d0efe06 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -753,15 +753,12 @@ static void fsl_imx7_class_init(ObjectClass *oc, const void *data) device_class_set_props(dc, fsl_imx7_properties); dc->realize = fsl_imx7_realize; - - /* Reason: Uses serial_hds and nd_table in realize() directly */ - dc->user_creatable = false; dc->desc = "i.MX7 SOC"; } static const TypeInfo fsl_imx7_type_info = { .name = TYPE_FSL_IMX7, - .parent = TYPE_DEVICE, + .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(FslIMX7State), .instance_init = fsl_imx7_init, .class_init = fsl_imx7_class_init, diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index 8905bf0016..c0fefbf3b9 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -52,7 +52,7 @@ static void mcimx7d_sabre_init(MachineState *machine) object_property_add_child(OBJECT(machine), "soc", OBJECT(s)); object_property_set_bool(OBJECT(s), "fec2-phy-connected", false, &error_fatal); - qdev_realize(DEVICE(s), NULL, &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal); memory_region_add_subregion(get_system_memory(), FSL_IMX7_MMDC_ADDR, machine->ram); -- 2.55.0
