Re: [Qemu-devel] [RESEND PATCH 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1)
On 02/05/2017 10:37 AM, xiaoqiang zhao wrote: * split the old SysBus init function into an instance_init and a Device realize function * use DeviceClass::realize instead of SysBusDeviceClass::init Signed-off-by: xiaoqiang zhaoReviewed-by: Philippe Mathieu-Daudé --- hw/timer/m48t59.c | 35 ++- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index e46ca88391..39e425e950 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -765,30 +765,31 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp) } } -static int m48t59_init1(SysBusDevice *dev) +static void m48t59_init1(Object *obj) { -M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(dev); -M48txxSysBusState *d = M48TXX_SYS_BUS(dev); -Object *o = OBJECT(dev); +M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(obj); +M48txxSysBusState *d = M48TXX_SYS_BUS(obj); +SysBusDevice *dev = SYS_BUS_DEVICE(obj); M48t59State *s = >state; -Error *err = NULL; s->model = u->info.model; s->size = u->info.size; sysbus_init_irq(dev, >IRQ); -memory_region_init_io(>iomem, o, _ops, s, "m48t59.nvram", +memory_region_init_io(>iomem, obj, _ops, s, "m48t59.nvram", s->size); -memory_region_init_io(>io, o, _io_ops, s, "m48t59", 4); -sysbus_init_mmio(dev, >iomem); -sysbus_init_mmio(dev, >io); -m48t59_realize_common(s, ); -if (err != NULL) { -error_free(err); -return -1; -} +memory_region_init_io(>io, obj, _io_ops, s, "m48t59", 4); +} -return 0; +static void m48t59_realize(DeviceState *dev, Error **errp) +{ +M48txxSysBusState *d = M48TXX_SYS_BUS(dev); +M48t59State *s = >state; +SysBusDevice *sbd = SYS_BUS_DEVICE(dev); + +sysbus_init_mmio(sbd, >iomem); +sysbus_init_mmio(sbd, >io); +m48t59_realize_common(s, errp); } static uint32_t m48txx_isa_read(Nvram *obj, uint32_t addr) @@ -862,10 +863,9 @@ static Property m48t59_sysbus_properties[] = { static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); -SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); NvramClass *nc = NVRAM_CLASS(klass); -k->init = m48t59_init1; +dc->realize = m48t59_realize; dc->reset = m48t59_reset_sysbus; dc->props = m48t59_sysbus_properties; nc->read = m48txx_sysbus_read; @@ -891,6 +891,7 @@ static const TypeInfo m48txx_sysbus_type_info = { .name = TYPE_M48TXX_SYS_BUS, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(M48txxSysBusState), +.instance_init = m48t59_init1, .abstract = true, .class_init = m48txx_sysbus_class_init, .interfaces = (InterfaceInfo[]) {
[Qemu-devel] [RESEND PATCH 5/9] hw/timer: QOM'ify m48txx_sysbus (pass 1)
* split the old SysBus init function into an instance_init and a Device realize function * use DeviceClass::realize instead of SysBusDeviceClass::init Signed-off-by: xiaoqiang zhao--- hw/timer/m48t59.c | 35 ++- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index e46ca88391..39e425e950 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -765,30 +765,31 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp) } } -static int m48t59_init1(SysBusDevice *dev) +static void m48t59_init1(Object *obj) { -M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(dev); -M48txxSysBusState *d = M48TXX_SYS_BUS(dev); -Object *o = OBJECT(dev); +M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(obj); +M48txxSysBusState *d = M48TXX_SYS_BUS(obj); +SysBusDevice *dev = SYS_BUS_DEVICE(obj); M48t59State *s = >state; -Error *err = NULL; s->model = u->info.model; s->size = u->info.size; sysbus_init_irq(dev, >IRQ); -memory_region_init_io(>iomem, o, _ops, s, "m48t59.nvram", +memory_region_init_io(>iomem, obj, _ops, s, "m48t59.nvram", s->size); -memory_region_init_io(>io, o, _io_ops, s, "m48t59", 4); -sysbus_init_mmio(dev, >iomem); -sysbus_init_mmio(dev, >io); -m48t59_realize_common(s, ); -if (err != NULL) { -error_free(err); -return -1; -} +memory_region_init_io(>io, obj, _io_ops, s, "m48t59", 4); +} -return 0; +static void m48t59_realize(DeviceState *dev, Error **errp) +{ +M48txxSysBusState *d = M48TXX_SYS_BUS(dev); +M48t59State *s = >state; +SysBusDevice *sbd = SYS_BUS_DEVICE(dev); + +sysbus_init_mmio(sbd, >iomem); +sysbus_init_mmio(sbd, >io); +m48t59_realize_common(s, errp); } static uint32_t m48txx_isa_read(Nvram *obj, uint32_t addr) @@ -862,10 +863,9 @@ static Property m48t59_sysbus_properties[] = { static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); -SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); NvramClass *nc = NVRAM_CLASS(klass); -k->init = m48t59_init1; +dc->realize = m48t59_realize; dc->reset = m48t59_reset_sysbus; dc->props = m48t59_sysbus_properties; nc->read = m48txx_sysbus_read; @@ -891,6 +891,7 @@ static const TypeInfo m48txx_sysbus_type_info = { .name = TYPE_M48TXX_SYS_BUS, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(M48txxSysBusState), +.instance_init = m48t59_init1, .abstract = true, .class_init = m48txx_sysbus_class_init, .interfaces = (InterfaceInfo[]) { -- 2.11.0