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-imx6ul.h | 5 ++--- hw/arm/fsl-imx6ul.c | 4 +--- hw/arm/mcimx6ul-evk.c | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/hw/arm/fsl-imx6ul.h b/include/hw/arm/fsl-imx6ul.h index 6205fe6b77..9ae0488990 100644 --- a/include/hw/arm/fsl-imx6ul.h +++ b/include/hw/arm/fsl-imx6ul.h @@ -18,6 +18,7 @@ #define FSL_IMX6UL_H #include "hw/cpu/a15mpcore.h" +#include "hw/core/sysbus.h" #include "hw/misc/imx6ul_ccm.h" #include "hw/misc/imx6_src.h" #include "hw/misc/imx7_snvs.h" @@ -64,10 +65,8 @@ enum FslIMX6ULConfiguration { }; struct FslIMX6ULState { - /*< private >*/ - DeviceState parent_obj; + SysBusDevice parent_obj; - /*< public >*/ ARMCPU cpu; A15MPPrivState a7mpcore; IMXGPTState gpt[FSL_IMX6UL_NUM_GPTS]; diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c index 1863558a0d..84451c9909 100644 --- a/hw/arm/fsl-imx6ul.c +++ b/hw/arm/fsl-imx6ul.c @@ -730,13 +730,11 @@ static void fsl_imx6ul_class_init(ObjectClass *oc, const void *data) device_class_set_props(dc, fsl_imx6ul_properties); dc->realize = fsl_imx6ul_realize; dc->desc = "i.MX6UL SOC"; - /* Reason: Uses serial_hds and nd_table in realize() directly */ - dc->user_creatable = false; } static const TypeInfo fsl_imx6ul_type_info = { .name = TYPE_FSL_IMX6UL, - .parent = TYPE_DEVICE, + .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(FslIMX6ULState), .instance_init = fsl_imx6ul_init, .class_init = fsl_imx6ul_class_init, diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 4964cb9345..53d221b4a9 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -44,7 +44,7 @@ static void mcimx6ul_evk_init(MachineState *machine) object_property_set_uint(OBJECT(s), "fec2-phy-num", 1, &error_fatal); object_property_set_bool(OBJECT(s), "fec1-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_IMX6UL_MMDC_ADDR, machine->ram); -- 2.55.0
