Message ID | 20200920082018.16135-3-mark.cave-ayland@ilande.co.uk |
---|---|
State | New |
Headers | show |
Series | QOM minor fixes | expand |
On 9/20/20 10:20 AM, Mark Cave-Ayland wrote: > Store the child object directly within the sparc32-ledma object rather than > using link properties. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/dma/sparc32_dma.c | 14 ++++++++------ > include/hw/sparc/sparc32_dma.h | 2 +- > 2 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c > index b25a212f7a..84196afb95 100644 > --- a/hw/dma/sparc32_dma.c > +++ b/hw/dma/sparc32_dma.c > @@ -331,24 +331,26 @@ static const TypeInfo sparc32_espdma_device_info = { > static void sparc32_ledma_device_init(Object *obj) > { > DMADeviceState *s = SPARC32_DMA_DEVICE(obj); > + LEDMADeviceState *ls = SPARC32_LEDMA_DEVICE(obj); > > memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, > "ledma-mmio", DMA_SIZE); > + > + object_initialize_child(obj, "lance", &ls->lance, TYPE_LANCE); > } > > static void sparc32_ledma_device_realize(DeviceState *dev, Error **errp) > { > - DeviceState *d; > + LEDMADeviceState *s = SPARC32_LEDMA_DEVICE(dev); > + SysBusPCNetState *lance = SYSBUS_PCNET(&s->lance); > NICInfo *nd = &nd_table[0]; > > /* FIXME use qdev NIC properties instead of nd_table[] */ > qemu_check_nic_model(nd, TYPE_LANCE); > > - d = qdev_new(TYPE_LANCE); > - object_property_add_child(OBJECT(dev), "lance", OBJECT(d)); > - qdev_set_nic_properties(d, nd); > - object_property_set_link(OBJECT(d), "dma", OBJECT(dev), &error_abort); > - sysbus_realize_and_unref(SYS_BUS_DEVICE(d), &error_fatal); > + qdev_set_nic_properties(DEVICE(lance), nd); > + object_property_set_link(OBJECT(lance), "dma", OBJECT(dev), &error_abort); > + sysbus_realize(SYS_BUS_DEVICE(lance), &error_fatal); > } > > static void sparc32_ledma_device_class_init(ObjectClass *klass, void *data) > diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h > index a7b1dd8418..f2bfe272ba 100644 > --- a/include/hw/sparc/sparc32_dma.h > +++ b/include/hw/sparc/sparc32_dma.h > @@ -43,7 +43,7 @@ DECLARE_INSTANCE_CHECKER(LEDMADeviceState, SPARC32_LEDMA_DEVICE, > struct LEDMADeviceState { > DMADeviceState parent_obj; > > - SysBusPCNetState *lance; > + SysBusPCNetState lance; > }; > > #define TYPE_SPARC32_DMA "sparc32-dma" >
diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index b25a212f7a..84196afb95 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -331,24 +331,26 @@ static const TypeInfo sparc32_espdma_device_info = { static void sparc32_ledma_device_init(Object *obj) { DMADeviceState *s = SPARC32_DMA_DEVICE(obj); + LEDMADeviceState *ls = SPARC32_LEDMA_DEVICE(obj); memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, "ledma-mmio", DMA_SIZE); + + object_initialize_child(obj, "lance", &ls->lance, TYPE_LANCE); } static void sparc32_ledma_device_realize(DeviceState *dev, Error **errp) { - DeviceState *d; + LEDMADeviceState *s = SPARC32_LEDMA_DEVICE(dev); + SysBusPCNetState *lance = SYSBUS_PCNET(&s->lance); NICInfo *nd = &nd_table[0]; /* FIXME use qdev NIC properties instead of nd_table[] */ qemu_check_nic_model(nd, TYPE_LANCE); - d = qdev_new(TYPE_LANCE); - object_property_add_child(OBJECT(dev), "lance", OBJECT(d)); - qdev_set_nic_properties(d, nd); - object_property_set_link(OBJECT(d), "dma", OBJECT(dev), &error_abort); - sysbus_realize_and_unref(SYS_BUS_DEVICE(d), &error_fatal); + qdev_set_nic_properties(DEVICE(lance), nd); + object_property_set_link(OBJECT(lance), "dma", OBJECT(dev), &error_abort); + sysbus_realize(SYS_BUS_DEVICE(lance), &error_fatal); } static void sparc32_ledma_device_class_init(ObjectClass *klass, void *data) diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index a7b1dd8418..f2bfe272ba 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -43,7 +43,7 @@ DECLARE_INSTANCE_CHECKER(LEDMADeviceState, SPARC32_LEDMA_DEVICE, struct LEDMADeviceState { DMADeviceState parent_obj; - SysBusPCNetState *lance; + SysBusPCNetState lance; }; #define TYPE_SPARC32_DMA "sparc32-dma"
Store the child object directly within the sparc32-ledma object rather than using link properties. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- hw/dma/sparc32_dma.c | 14 ++++++++------ include/hw/sparc/sparc32_dma.h | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-)