提交 5b982482 编写于 作者: X xiaoqiang zhao 提交者: Peter Maydell

hw/char: QOM'ify exynos4210_uart.c

Drop the old Sysbus init and use instance_init and
DeviceClass::realize instead
Signed-off-by: Nxiaoqiang zhao <zxq_yx_007@163.com>
Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
上级 d307c28c
...@@ -629,22 +629,26 @@ DeviceState *exynos4210_uart_create(hwaddr addr, ...@@ -629,22 +629,26 @@ DeviceState *exynos4210_uart_create(hwaddr addr,
return dev; return dev;
} }
static int exynos4210_uart_init(SysBusDevice *dev) static void exynos4210_uart_init(Object *obj)
{ {
SysBusDevice *dev = SYS_BUS_DEVICE(obj);
Exynos4210UartState *s = EXYNOS4210_UART(dev); Exynos4210UartState *s = EXYNOS4210_UART(dev);
/* memory mapping */ /* memory mapping */
memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_uart_ops, s, memory_region_init_io(&s->iomem, obj, &exynos4210_uart_ops, s,
"exynos4210.uart", EXYNOS4210_UART_REGS_MEM_SIZE); "exynos4210.uart", EXYNOS4210_UART_REGS_MEM_SIZE);
sysbus_init_mmio(dev, &s->iomem); sysbus_init_mmio(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq); sysbus_init_irq(dev, &s->irq);
}
static void exynos4210_uart_realize(DeviceState *dev, Error **errp)
{
Exynos4210UartState *s = EXYNOS4210_UART(dev);
qemu_chr_fe_set_handlers(&s->chr, exynos4210_uart_can_receive, qemu_chr_fe_set_handlers(&s->chr, exynos4210_uart_can_receive,
exynos4210_uart_receive, exynos4210_uart_event, exynos4210_uart_receive, exynos4210_uart_event,
s, NULL, true); s, NULL, true);
return 0;
} }
static Property exynos4210_uart_properties[] = { static Property exynos4210_uart_properties[] = {
...@@ -658,9 +662,8 @@ static Property exynos4210_uart_properties[] = { ...@@ -658,9 +662,8 @@ static Property exynos4210_uart_properties[] = {
static void exynos4210_uart_class_init(ObjectClass *klass, void *data) static void exynos4210_uart_class_init(ObjectClass *klass, void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
k->init = exynos4210_uart_init; dc->realize = exynos4210_uart_realize;
dc->reset = exynos4210_uart_reset; dc->reset = exynos4210_uart_reset;
dc->props = exynos4210_uart_properties; dc->props = exynos4210_uart_properties;
dc->vmsd = &vmstate_exynos4210_uart; dc->vmsd = &vmstate_exynos4210_uart;
...@@ -670,6 +673,7 @@ static const TypeInfo exynos4210_uart_info = { ...@@ -670,6 +673,7 @@ static const TypeInfo exynos4210_uart_info = {
.name = TYPE_EXYNOS4210_UART, .name = TYPE_EXYNOS4210_UART,
.parent = TYPE_SYS_BUS_DEVICE, .parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(Exynos4210UartState), .instance_size = sizeof(Exynos4210UartState),
.instance_init = exynos4210_uart_init,
.class_init = exynos4210_uart_class_init, .class_init = exynos4210_uart_class_init,
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册