[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer
From: |
xiaoqiang zhao |
Subject: |
[Qemu-arm] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer |
Date: |
Tue, 16 Feb 2016 19:09:39 +0800 |
* split the old SysBus init function into an instance_init
and a Device realize function
* use DeviceClass::realize instead of SysBusDeviceClass::init
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: xiaoqiang zhao <address@hidden>
---
hw/timer/grlib_gptimer.c | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c
index dd000f5..02a19c9 100644
--- a/hw/timer/grlib_gptimer.c
+++ b/hw/timer/grlib_gptimer.c
@@ -348,16 +348,29 @@ static void grlib_gptimer_reset(DeviceState *d)
}
}
-static int grlib_gptimer_init(SysBusDevice *dev)
+static void grlib_gptimer_init(Object *obj)
{
- GPTimerUnit *unit = GRLIB_GPTIMER(dev);
- unsigned int i;
+ GPTimerUnit *unit = GRLIB_GPTIMER(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
assert(unit->nr_timers > 0);
assert(unit->nr_timers <= GPTIMER_MAX_TIMERS);
unit->timers = g_malloc0(sizeof unit->timers[0] * unit->nr_timers);
+ memory_region_init_io(&unit->iomem, obj, &grlib_gptimer_ops,
+ unit, "gptimer",
+ UNIT_REG_SIZE + GPTIMER_REG_SIZE * unit->nr_timers);
+
+ sysbus_init_mmio(dev, &unit->iomem);
+}
+
+static void grlib_gptimer_realize(DeviceState *dev, Error *errp)
+{
+ GPTimerUnit *unit = GRLIB_GPTIMER(dev);
+ SysBusDevice *dev = SYS_BUS_DEVICE(dev);
+ unsigned int i;
+
for (i = 0; i < unit->nr_timers; i++) {
GPTimer *timer = &unit->timers[i];
@@ -371,13 +384,6 @@ static int grlib_gptimer_init(SysBusDevice *dev)
ptimer_set_freq(timer->ptimer, unit->freq_hz);
}
-
- memory_region_init_io(&unit->iomem, OBJECT(unit), &grlib_gptimer_ops,
- unit, "gptimer",
- UNIT_REG_SIZE + GPTIMER_REG_SIZE * unit->nr_timers);
-
- sysbus_init_mmio(dev, &unit->iomem);
- return 0;
}
static Property grlib_gptimer_properties[] = {
@@ -390,9 +396,8 @@ static Property grlib_gptimer_properties[] = {
static void grlib_gptimer_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = grlib_gptimer_init;
+ dc->realize = grlib_gptimer_realize;
dc->reset = grlib_gptimer_reset;
dc->props = grlib_gptimer_properties;
}
@@ -401,6 +406,7 @@ static const TypeInfo grlib_gptimer_info = {
.name = TYPE_GRLIB_GPTIMER,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(GPTimerUnit),
+ .instance_init = grlib_gptimer_init,
.class_init = grlib_gptimer_class_init,
};
--
2.1.4
- [Qemu-arm] [PATCH v3 00/16] QOM'ify hw/timer/*, xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 02/16] hw/timer: QOM'ify arm_timer (pass 2), xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer,
xiaoqiang zhao <=
- [Qemu-arm] [PATCH v3 04/16] hw/timer: QOM'ify exynos4210_mct, xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 06/16] hw/timer: QOM'ify exynos4210_rtc, xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1), xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 09/16] hw/timer: QOM'ify m48txx_sysbus (pass 1), xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 05/16] hw/timer: QOM'ify exynos4210_pwm, xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer, xiaoqiang zhao, 2016/02/16
- [Qemu-arm] [PATCH v3 08/16] hw/timer: QOM'ify lm32_timer, xiaoqiang zhao, 2016/02/16
- Re: [Qemu-arm] [PATCH v3 00/16] QOM'ify hw/timer/*, Peter Maydell, 2016/02/18