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-imx25.h | 5 ++--- hw/arm/fsl-imx25.c | 7 +------ hw/arm/imx25_pdk.c | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h index b68d4334a0..4bb4d5b3e5 100644 --- a/include/hw/arm/fsl-imx25.h +++ b/include/hw/arm/fsl-imx25.h @@ -29,6 +29,7 @@ #include "hw/sd/sdhci.h" #include "hw/usb/chipidea.h" #include "hw/watchdog/wdt_imx2.h" +#include "hw/core/sysbus.h" #include "system/memory.h" #include "target/arm/cpu.h" #include "qom/object.h" @@ -45,10 +46,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(FslIMX25State, FSL_IMX25) #define FSL_IMX25_NUM_USBS 2 struct FslIMX25State { - /*< private >*/ - DeviceState parent_obj; + SysBusDevice parent_obj; - /*< public >*/ ARMCPU cpu; IMXAVICState avic; IMX25CCMState ccm; diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index 7f65f4ca4b..efb22359c5 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -317,16 +317,11 @@ static void fsl_imx25_class_init(ObjectClass *oc, const void *data) device_class_set_props(dc, fsl_imx25_properties); dc->realize = fsl_imx25_realize; dc->desc = "i.MX25 SOC"; - /* - * Reason: uses serial_hds in realize and the imx25 board does not - * support multiple CPUs - */ - dc->user_creatable = false; } static const TypeInfo fsl_imx25_type_info = { .name = TYPE_FSL_IMX25, - .parent = TYPE_DEVICE, + .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(FslIMX25State), .instance_init = fsl_imx25_init, .class_init = fsl_imx25_class_init, diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 243c30a67e..6ce3e35ee3 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -72,7 +72,7 @@ static void imx25_pdk_init(MachineState *machine) object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX25); - qdev_realize(DEVICE(&s->soc), NULL, &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal); /* We need to initialize our memory */ if (machine->ram_size > (FSL_IMX25_SDRAM0_SIZE + FSL_IMX25_SDRAM1_SIZE)) { -- 2.55.0
