Message ID | 20230203145536.17585-11-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw: Use QOM alias properties and few QOM/QDev cleanups | expand |
On Fri, 3 Feb 2023, Philippe Mathieu-Daudé wrote: > Note this device doesn't implement unrealize(). > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu> > --- > hw/display/sm501.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/hw/display/sm501.c b/hw/display/sm501.c > index 52e42585af..0f7e09d7e2 100644 > --- a/hw/display/sm501.c > +++ b/hw/display/sm501.c > @@ -28,6 +28,7 @@ > #include "qapi/error.h" > #include "qemu/log.h" > #include "qemu/module.h" > +#include "hw/usb/hcd-ohci.h" > #include "hw/char/serial.h" > #include "ui/console.h" > #include "hw/sysbus.h" > @@ -1944,13 +1945,13 @@ struct SM501SysBusState { > uint32_t vram_size; > uint32_t base; > SerialMM serial; > + OHCISysBusState ohci; > }; > > static void sm501_realize_sysbus(DeviceState *dev, Error **errp) > { > SM501SysBusState *s = SYSBUS_SM501(dev); > SysBusDevice *sbd = SYS_BUS_DEVICE(dev); > - DeviceState *usb_dev; > MemoryRegion *mr; > > sm501_init(&s->state, dev, s->vram_size); > @@ -1963,13 +1964,11 @@ static void sm501_realize_sysbus(DeviceState *dev, Error **errp) > sysbus_init_mmio(sbd, &s->state.mmio_region); > > /* bridge to usb host emulation module */ > - usb_dev = qdev_new("sysbus-ohci"); > - qdev_prop_set_uint32(usb_dev, "num-ports", 2); > - qdev_prop_set_uint64(usb_dev, "dma-offset", s->base); > - sysbus_realize_and_unref(SYS_BUS_DEVICE(usb_dev), &error_fatal); > + qdev_prop_set_uint64(DEVICE(&s->ohci), "dma-offset", s->base); > + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->ohci), &error_fatal); > memory_region_add_subregion(&s->state.mmio_region, SM501_USB_HOST, > - sysbus_mmio_get_region(SYS_BUS_DEVICE(usb_dev), 0)); > - sysbus_pass_irq(sbd, SYS_BUS_DEVICE(usb_dev)); > + sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->ohci), 0)); > + sysbus_pass_irq(sbd, SYS_BUS_DEVICE(&s->ohci)); > > /* bridge to serial emulation module */ > sysbus_realize(SYS_BUS_DEVICE(&s->serial), &error_fatal); > @@ -2016,8 +2015,12 @@ static void sm501_sysbus_class_init(ObjectClass *klass, void *data) > static void sm501_sysbus_init(Object *o) > { > SM501SysBusState *sm501 = SYSBUS_SM501(o); > + OHCISysBusState *ohci = &sm501->ohci; > SerialMM *smm = &sm501->serial; > > + object_initialize_child(o, "ohci", ohci, TYPE_SYSBUS_OHCI); > + qdev_prop_set_uint32(DEVICE(ohci), "num-ports", 2); > + > object_initialize_child(o, "serial", smm, TYPE_SERIAL_MM); > qdev_set_legacy_instance_id(DEVICE(smm), SM501_UART0, 2); > qdev_prop_set_uint8(DEVICE(smm), "regshift", 2); >
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > Note this device doesn't implement unrealize(). > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> This has become commit 01c400ae435f911eaf575b016090922c074dc1e4.
diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 52e42585af..0f7e09d7e2 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -28,6 +28,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" +#include "hw/usb/hcd-ohci.h" #include "hw/char/serial.h" #include "ui/console.h" #include "hw/sysbus.h" @@ -1944,13 +1945,13 @@ struct SM501SysBusState { uint32_t vram_size; uint32_t base; SerialMM serial; + OHCISysBusState ohci; }; static void sm501_realize_sysbus(DeviceState *dev, Error **errp) { SM501SysBusState *s = SYSBUS_SM501(dev); SysBusDevice *sbd = SYS_BUS_DEVICE(dev); - DeviceState *usb_dev; MemoryRegion *mr; sm501_init(&s->state, dev, s->vram_size); @@ -1963,13 +1964,11 @@ static void sm501_realize_sysbus(DeviceState *dev, Error **errp) sysbus_init_mmio(sbd, &s->state.mmio_region); /* bridge to usb host emulation module */ - usb_dev = qdev_new("sysbus-ohci"); - qdev_prop_set_uint32(usb_dev, "num-ports", 2); - qdev_prop_set_uint64(usb_dev, "dma-offset", s->base); - sysbus_realize_and_unref(SYS_BUS_DEVICE(usb_dev), &error_fatal); + qdev_prop_set_uint64(DEVICE(&s->ohci), "dma-offset", s->base); + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->ohci), &error_fatal); memory_region_add_subregion(&s->state.mmio_region, SM501_USB_HOST, - sysbus_mmio_get_region(SYS_BUS_DEVICE(usb_dev), 0)); - sysbus_pass_irq(sbd, SYS_BUS_DEVICE(usb_dev)); + sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->ohci), 0)); + sysbus_pass_irq(sbd, SYS_BUS_DEVICE(&s->ohci)); /* bridge to serial emulation module */ sysbus_realize(SYS_BUS_DEVICE(&s->serial), &error_fatal); @@ -2016,8 +2015,12 @@ static void sm501_sysbus_class_init(ObjectClass *klass, void *data) static void sm501_sysbus_init(Object *o) { SM501SysBusState *sm501 = SYSBUS_SM501(o); + OHCISysBusState *ohci = &sm501->ohci; SerialMM *smm = &sm501->serial; + object_initialize_child(o, "ohci", ohci, TYPE_SYSBUS_OHCI); + qdev_prop_set_uint32(DEVICE(ohci), "num-ports", 2); + object_initialize_child(o, "serial", smm, TYPE_SERIAL_MM); qdev_set_legacy_instance_id(DEVICE(smm), SM501_UART0, 2); qdev_prop_set_uint8(DEVICE(smm), "regshift", 2);
Note this device doesn't implement unrealize(). Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/display/sm501.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)