* [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/*
@ 2016-02-16 11:09 xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1) xiaoqiang zhao
` (9 more replies)
0 siblings, 10 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
This patch series QOM'ify timer code under hw/timer directory.
Main idea is to split the initfn's work, some to TypeInfo.instance_init
and some is placed in DeviceClass::realize.
Drop the use of SysBusDeviceClass::init if possible.
changes in v3:
* remove unnecessary OBJECT cast
* refine some commit message
* use DeviceClass::vmsd instead of vmstate_register to register
the VMState if possible
changes in v2:
fix a stupid typo (timmer->timer)
xiaoqiang zhao (16):
hw/timer: QOM'ify arm_timer (pass 1)
hw/timer: QOM'ify arm_timer (pass 2)
hw/timer: QOM'ify etraxfs_timer
hw/timer: QOM'ify exynos4210_mct
hw/timer: QOM'ify exynos4210_pwm
hw/timer: QOM'ify exynos4210_rtc
hw/timer: QOM'ify grlib_gptimer
hw/timer: QOM'ify lm32_timer
hw/timer: QOM'ify m48txx_sysbus (pass 1)
hw/timer: QOM'ify m48txx_sysbus (pass 2)
hw/timer: QOM'ify milkymist_sysctl
hw/timer: QOM'ify pl031
hw/timer: QOM'ify puv3_ost
hw/timer: QOM'ify pxa2xx_timer
hw/timer: QOM'ify slavio_timer
hw/timer: QOM'ify tusb6010
hw/timer/arm_timer.c | 42 ++++++++++++++++++++----------------------
hw/timer/etraxfs_timer.c | 14 +++++++-------
hw/timer/exynos4210_mct.c | 12 +++++-------
hw/timer/exynos4210_pwm.c | 12 +++++-------
hw/timer/exynos4210_rtc.c | 12 +++++-------
hw/timer/grlib_gptimer.c | 30 ++++++++++++++++++------------
hw/timer/lm32_timer.c | 19 ++++++++++++-------
hw/timer/m48t59.c | 39 ++++++++++++++++++++-------------------
hw/timer/milkymist-sysctl.c | 21 +++++++++++++--------
hw/timer/pl031.c | 11 +++++------
hw/timer/puv3_ost.c | 18 +++++-------------
hw/timer/pxa2xx_timer.c | 36 +++++++++++++++++++++---------------
hw/timer/slavio_timer.c | 12 +++++-------
hw/timer/tusb6010.c | 13 ++++++-------
14 files changed, 147 insertions(+), 144 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1)
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 02/16] hw/timer: QOM'ify arm_timer (pass 2) xiaoqiang zhao
` (8 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
* assign icp_pit_init to icp_pit_info.instance_init
* 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 <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/arm_timer.c | 40 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
index ba390ad..5bd2d75 100644
--- a/hw/timer/arm_timer.c
+++ b/hw/timer/arm_timer.c
@@ -277,21 +277,26 @@ static const VMStateDescription vmstate_sp804 = {
}
};
-static int sp804_init(SysBusDevice *sbd)
+static void sp804_init(Object *obj)
{
- DeviceState *dev = DEVICE(sbd);
- SP804State *s = SP804(dev);
+ SP804State *s = SP804(obj);
+ SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
sysbus_init_irq(sbd, &s->irq);
+ memory_region_init_io(&s->iomem, obj, &sp804_ops, s,
+ "sp804", 0x1000);
+ sysbus_init_mmio(sbd, &s->iomem);
+}
+
+static void sp804_realize(DeviceState *dev, Error **errp)
+{
+ SP804State *s = SP804(dev);
+
s->timer[0] = arm_timer_init(s->freq0);
s->timer[1] = arm_timer_init(s->freq1);
s->timer[0]->irq = qemu_allocate_irq(sp804_set_irq, s, 0);
s->timer[1]->irq = qemu_allocate_irq(sp804_set_irq, s, 1);
- memory_region_init_io(&s->iomem, OBJECT(s), &sp804_ops, s,
- "sp804", 0x1000);
- sysbus_init_mmio(sbd, &s->iomem);
vmstate_register(dev, -1, &vmstate_sp804, s);
- return 0;
}
/* Integrator/CP timer module. */
@@ -344,9 +349,10 @@ static const MemoryRegionOps icp_pit_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static int icp_pit_init(SysBusDevice *dev)
+static void icp_pit_init(Object *obj)
{
- icp_pit_state *s = INTEGRATOR_PIT(dev);
+ icp_pit_state *s = INTEGRATOR_PIT(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
/* Timer 0 runs at the system clock speed (40MHz). */
s->timer[0] = arm_timer_init(40000000);
@@ -358,26 +364,18 @@ static int icp_pit_init(SysBusDevice *dev)
sysbus_init_irq(dev, &s->timer[1]->irq);
sysbus_init_irq(dev, &s->timer[2]->irq);
- memory_region_init_io(&s->iomem, OBJECT(s), &icp_pit_ops, s,
+ memory_region_init_io(&s->iomem, obj, &icp_pit_ops, s,
"icp_pit", 0x1000);
sysbus_init_mmio(dev, &s->iomem);
/* This device has no state to save/restore. The component timers will
save themselves. */
- return 0;
-}
-
-static void icp_pit_class_init(ObjectClass *klass, void *data)
-{
- SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
-
- sdc->init = icp_pit_init;
}
static const TypeInfo icp_pit_info = {
.name = TYPE_INTEGRATOR_PIT,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(icp_pit_state),
- .class_init = icp_pit_class_init,
+ .instance_init = icp_pit_init,
};
static Property sp804_properties[] = {
@@ -388,10 +386,9 @@ static Property sp804_properties[] = {
static void sp804_class_init(ObjectClass *klass, void *data)
{
- SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
DeviceClass *k = DEVICE_CLASS(klass);
- sdc->init = sp804_init;
+ k->realize = sp804_realize;
k->props = sp804_properties;
}
@@ -399,6 +396,7 @@ static const TypeInfo sp804_info = {
.name = TYPE_SP804,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(SP804State),
+ .instance_init = sp804_init,
.class_init = sp804_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 02/16] hw/timer: QOM'ify arm_timer (pass 2)
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1) xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer xiaoqiang zhao
` (7 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
assign DeviceClass::vmsd instead of using vmstate_register function
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/arm_timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c
index 5bd2d75..f1ede5f 100644
--- a/hw/timer/arm_timer.c
+++ b/hw/timer/arm_timer.c
@@ -296,7 +296,6 @@ static void sp804_realize(DeviceState *dev, Error **errp)
s->timer[1] = arm_timer_init(s->freq1);
s->timer[0]->irq = qemu_allocate_irq(sp804_set_irq, s, 0);
s->timer[1]->irq = qemu_allocate_irq(sp804_set_irq, s, 1);
- vmstate_register(dev, -1, &vmstate_sp804, s);
}
/* Integrator/CP timer module. */
@@ -390,6 +389,7 @@ static void sp804_class_init(ObjectClass *klass, void *data)
k->realize = sp804_realize;
k->props = sp804_properties;
+ k->vmsd = &vmstate_sp804;
}
static const TypeInfo sp804_info = {
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1) xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 02/16] hw/timer: QOM'ify arm_timer (pass 2) xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:24 ` Edgar E. Iglesias
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 04/16] hw/timer: QOM'ify exynos4210_mct xiaoqiang zhao
` (6 subsequent siblings)
9 siblings, 1 reply; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
assign etraxfs_timer_init to etraxfs_timer_info.instance_init
and drop the SysBusDeviceClass::init
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/etraxfs_timer.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/hw/timer/etraxfs_timer.c b/hw/timer/etraxfs_timer.c
index 36d8f46..4f115c7 100644
--- a/hw/timer/etraxfs_timer.c
+++ b/hw/timer/etraxfs_timer.c
@@ -315,9 +315,10 @@ static void etraxfs_timer_reset(void *opaque)
qemu_irq_lower(t->irq);
}
-static int etraxfs_timer_init(SysBusDevice *dev)
+static void etraxfs_timer_init(Object *obj)
{
- ETRAXTimerState *t = ETRAX_TIMER(dev);
+ ETRAXTimerState *t = ETRAX_TIMER(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
t->bh_t0 = qemu_bh_new(timer0_hit, t);
t->bh_t1 = qemu_bh_new(timer1_hit, t);
@@ -329,24 +330,23 @@ static int etraxfs_timer_init(SysBusDevice *dev)
sysbus_init_irq(dev, &t->irq);
sysbus_init_irq(dev, &t->nmi);
- memory_region_init_io(&t->mmio, OBJECT(t), &timer_ops, t,
+ memory_region_init_io(&t->mmio, obj, &timer_ops, t,
"etraxfs-timer", 0x5c);
sysbus_init_mmio(dev, &t->mmio);
- qemu_register_reset(etraxfs_timer_reset, t);
- return 0;
}
static void etraxfs_timer_class_init(ObjectClass *klass, void *data)
{
- SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
+ DeviceClass *dc = DEVICE_CLASS(klass);
- sdc->init = etraxfs_timer_init;
+ dc->reset = etraxfs_timer_reset;
}
static const TypeInfo etraxfs_timer_info = {
.name = TYPE_ETRAX_FS_TIMER,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(ETRAXTimerState),
+ .instance_init = etraxfs_timer_init,
.class_init = etraxfs_timer_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 04/16] hw/timer: QOM'ify exynos4210_mct
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (2 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 05/16] hw/timer: QOM'ify exynos4210_pwm xiaoqiang zhao
` (5 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
assign exynos4210_mct_init to exynos4210_mct_info.instance_init
and drop the SysBusDeviceClass::init
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/exynos4210_mct.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c
index 73e547c..ae69345 100644
--- a/hw/timer/exynos4210_mct.c
+++ b/hw/timer/exynos4210_mct.c
@@ -1422,10 +1422,11 @@ static const MemoryRegionOps exynos4210_mct_ops = {
};
/* MCT init */
-static int exynos4210_mct_init(SysBusDevice *dev)
+static void exynos4210_mct_init(Object *obj)
{
int i;
- Exynos4210MCTState *s = EXYNOS4210_MCT(dev);
+ Exynos4210MCTState *s = EXYNOS4210_MCT(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
QEMUBH *bh[2];
/* Global timer */
@@ -1450,19 +1451,15 @@ static int exynos4210_mct_init(SysBusDevice *dev)
sysbus_init_irq(dev, &s->l_timer[i].irq);
}
- memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_mct_ops, s,
+ memory_region_init_io(&s->iomem, obj, &exynos4210_mct_ops, s,
"exynos4210-mct", MCT_SFR_SIZE);
sysbus_init_mmio(dev, &s->iomem);
-
- return 0;
}
static void exynos4210_mct_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = exynos4210_mct_init;
dc->reset = exynos4210_mct_reset;
dc->vmsd = &vmstate_exynos4210_mct_state;
}
@@ -1471,6 +1468,7 @@ static const TypeInfo exynos4210_mct_info = {
.name = TYPE_EXYNOS4210_MCT,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(Exynos4210MCTState),
+ .instance_init = exynos4210_mct_init,
.class_init = exynos4210_mct_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 05/16] hw/timer: QOM'ify exynos4210_pwm
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (3 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 04/16] hw/timer: QOM'ify exynos4210_mct xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 06/16] hw/timer: QOM'ify exynos4210_rtc xiaoqiang zhao
` (4 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
assign exynos4210_pwm_init to exynos4210_pwm_info.instance_init
and drop the SysBusDeviceClass::init
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/exynos4210_pwm.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c
index 38f941f..0e9e2e9 100644
--- a/hw/timer/exynos4210_pwm.c
+++ b/hw/timer/exynos4210_pwm.c
@@ -380,9 +380,10 @@ static const MemoryRegionOps exynos4210_pwm_ops = {
/*
* PWM timer initialization
*/
-static int exynos4210_pwm_init(SysBusDevice *dev)
+static void exynos4210_pwm_init(Object *obj)
{
- Exynos4210PWMState *s = EXYNOS4210_PWM(dev);
+ Exynos4210PWMState *s = EXYNOS4210_PWM(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
int i;
QEMUBH *bh;
@@ -394,19 +395,15 @@ static int exynos4210_pwm_init(SysBusDevice *dev)
s->timer[i].parent = s;
}
- memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_pwm_ops, s,
+ memory_region_init_io(&s->iomem, obj, &exynos4210_pwm_ops, s,
"exynos4210-pwm", EXYNOS4210_PWM_REG_MEM_SIZE);
sysbus_init_mmio(dev, &s->iomem);
-
- return 0;
}
static void exynos4210_pwm_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = exynos4210_pwm_init;
dc->reset = exynos4210_pwm_reset;
dc->vmsd = &vmstate_exynos4210_pwm_state;
}
@@ -415,6 +412,7 @@ static const TypeInfo exynos4210_pwm_info = {
.name = TYPE_EXYNOS4210_PWM,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(Exynos4210PWMState),
+ .instance_init = exynos4210_pwm_init,
.class_init = exynos4210_pwm_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 06/16] hw/timer: QOM'ify exynos4210_rtc
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (4 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 05/16] hw/timer: QOM'ify exynos4210_pwm xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer xiaoqiang zhao
` (3 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
assign exynos4210_rtc_init to exynos4210_rtc_info.instance_init
and drop the SysBusDeviceClass::init
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/exynos4210_rtc.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/timer/exynos4210_rtc.c b/hw/timer/exynos4210_rtc.c
index 3341303..f21fb54 100644
--- a/hw/timer/exynos4210_rtc.c
+++ b/hw/timer/exynos4210_rtc.c
@@ -547,9 +547,10 @@ static const MemoryRegionOps exynos4210_rtc_ops = {
/*
* RTC timer initialization
*/
-static int exynos4210_rtc_init(SysBusDevice *dev)
+static void exynos4210_rtc_init(Object *obj)
{
- Exynos4210RTCState *s = EXYNOS4210_RTC(dev);
+ Exynos4210RTCState *s = EXYNOS4210_RTC(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
QEMUBH *bh;
bh = qemu_bh_new(exynos4210_rtc_tick, s);
@@ -564,19 +565,15 @@ static int exynos4210_rtc_init(SysBusDevice *dev)
sysbus_init_irq(dev, &s->alm_irq);
sysbus_init_irq(dev, &s->tick_irq);
- memory_region_init_io(&s->iomem, OBJECT(s), &exynos4210_rtc_ops, s,
+ memory_region_init_io(&s->iomem, obj, &exynos4210_rtc_ops, s,
"exynos4210-rtc", EXYNOS4210_RTC_REG_MEM_SIZE);
sysbus_init_mmio(dev, &s->iomem);
-
- return 0;
}
static void exynos4210_rtc_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = exynos4210_rtc_init;
dc->reset = exynos4210_rtc_reset;
dc->vmsd = &vmstate_exynos4210_rtc_state;
}
@@ -585,6 +582,7 @@ static const TypeInfo exynos4210_rtc_info = {
.name = TYPE_EXYNOS4210_RTC,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(Exynos4210RTCState),
+ .instance_init = exynos4210_rtc_init,
.class_init = exynos4210_rtc_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (5 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 06/16] hw/timer: QOM'ify exynos4210_rtc xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 08/16] hw/timer: QOM'ify lm32_timer xiaoqiang zhao
` (2 subsequent siblings)
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
* 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 <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
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
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 08/16] hw/timer: QOM'ify lm32_timer
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (6 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 09/16] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
2016-02-18 14:16 ` [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* Peter Maydell
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
* 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 <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
hw/timer/lm32_timer.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/hw/timer/lm32_timer.c b/hw/timer/lm32_timer.c
index 3198355..e45a65b 100644
--- a/hw/timer/lm32_timer.c
+++ b/hw/timer/lm32_timer.c
@@ -176,21 +176,26 @@ static void timer_reset(DeviceState *d)
ptimer_stop(s->ptimer);
}
-static int lm32_timer_init(SysBusDevice *dev)
+static void lm32_timer_init(Object *obj)
{
- LM32TimerState *s = LM32_TIMER(dev);
+ LM32TimerState *s = LM32_TIMER(obj);
+ SysBusDevice *dev = SYS_BUS_DEVICE(obj);
sysbus_init_irq(dev, &s->irq);
s->bh = qemu_bh_new(timer_hit, s);
s->ptimer = ptimer_init(s->bh);
- ptimer_set_freq(s->ptimer, s->freq_hz);
- memory_region_init_io(&s->iomem, OBJECT(s), &timer_ops, s,
+ memory_region_init_io(&s->iomem, obj, &timer_ops, s,
"timer", R_MAX * 4);
sysbus_init_mmio(dev, &s->iomem);
+}
- return 0;
+static void lm32_timer_realize(DeviceState *dev, Error **errp)
+{
+ LM32TimerState *s = LM32_TIMER(dev);
+
+ ptimer_set_freq(s->ptimer, s->freq_hz);
}
static const VMStateDescription vmstate_lm32_timer = {
@@ -213,9 +218,8 @@ static Property lm32_timer_properties[] = {
static void lm32_timer_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = lm32_timer_init;
+ dc->realize = lm32_timer_realize;
dc->reset = timer_reset;
dc->vmsd = &vmstate_lm32_timer;
dc->props = lm32_timer_properties;
@@ -225,6 +229,7 @@ static const TypeInfo lm32_timer_info = {
.name = TYPE_LM32_TIMER,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(LM32TimerState),
+ .instance_init = lm32_timer_init,
.class_init = lm32_timer_class_init,
};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 09/16] hw/timer: QOM'ify m48txx_sysbus (pass 1)
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (7 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 08/16] hw/timer: QOM'ify lm32_timer xiaoqiang zhao
@ 2016-02-16 11:09 ` xiaoqiang zhao
2016-02-18 14:16 ` [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* Peter Maydell
9 siblings, 0 replies; 12+ messages in thread
From: xiaoqiang zhao @ 2016-02-16 11:09 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, e.voevodin, xiaoqiang zhao, mark.cave-ayland,
michael, qemu-arm, edgar.iglesias, gxt, afaerber
* 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 <peter.maydell@linaro.org>
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
---
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 bbcfeb2..3c683aa 100644
--- a/hw/timer/m48t59.c
+++ b/hw/timer/m48t59.c
@@ -763,30 +763,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 = &d->state;
- Error *err = NULL;
s->model = u->info.model;
s->size = u->info.size;
sysbus_init_irq(dev, &s->IRQ);
- memory_region_init_io(&s->iomem, o, &nvram_ops, s, "m48t59.nvram",
+ memory_region_init_io(&s->iomem, obj, &nvram_ops, s, "m48t59.nvram",
s->size);
- memory_region_init_io(&d->io, o, &m48t59_io_ops, s, "m48t59", 4);
- sysbus_init_mmio(dev, &s->iomem);
- sysbus_init_mmio(dev, &d->io);
- m48t59_realize_common(s, &err);
- if (err != NULL) {
- error_free(err);
- return -1;
- }
+ memory_region_init_io(&d->io, obj, &m48t59_io_ops, s, "m48t59", 4);
+}
- return 0;
+static void m48t59_realize(DeviceState *dev, Error **errp)
+{
+ M48txxSysBusState *d = M48TXX_SYS_BUS(dev);
+ M48t59State *s = &d->state;
+ SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
+
+ sysbus_init_mmio(sbd, &s->iomem);
+ sysbus_init_mmio(sbd, &d->io);
+ m48t59_realize_common(s, errp);
}
static uint32_t m48txx_isa_read(Nvram *obj, uint32_t addr)
@@ -860,10 +861,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;
@@ -889,6 +889,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.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer xiaoqiang zhao
@ 2016-02-16 11:24 ` Edgar E. Iglesias
0 siblings, 0 replies; 12+ messages in thread
From: Edgar E. Iglesias @ 2016-02-16 11:24 UTC (permalink / raw)
To: xiaoqiang zhao
Cc: peter.maydell, e.voevodin, mark.cave-ayland, qemu-devel, michael,
qemu-arm, gxt, afaerber
On Tue, Feb 16, 2016 at 07:09:35PM +0800, xiaoqiang zhao wrote:
> assign etraxfs_timer_init to etraxfs_timer_info.instance_init
> and drop the SysBusDeviceClass::init
>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
> ---
> hw/timer/etraxfs_timer.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/hw/timer/etraxfs_timer.c b/hw/timer/etraxfs_timer.c
> index 36d8f46..4f115c7 100644
> --- a/hw/timer/etraxfs_timer.c
> +++ b/hw/timer/etraxfs_timer.c
> @@ -315,9 +315,10 @@ static void etraxfs_timer_reset(void *opaque)
> qemu_irq_lower(t->irq);
> }
>
> -static int etraxfs_timer_init(SysBusDevice *dev)
> +static void etraxfs_timer_init(Object *obj)
> {
> - ETRAXTimerState *t = ETRAX_TIMER(dev);
> + ETRAXTimerState *t = ETRAX_TIMER(obj);
> + SysBusDevice *dev = SYS_BUS_DEVICE(obj);
>
> t->bh_t0 = qemu_bh_new(timer0_hit, t);
> t->bh_t1 = qemu_bh_new(timer1_hit, t);
> @@ -329,24 +330,23 @@ static int etraxfs_timer_init(SysBusDevice *dev)
> sysbus_init_irq(dev, &t->irq);
> sysbus_init_irq(dev, &t->nmi);
>
> - memory_region_init_io(&t->mmio, OBJECT(t), &timer_ops, t,
> + memory_region_init_io(&t->mmio, obj, &timer_ops, t,
> "etraxfs-timer", 0x5c);
> sysbus_init_mmio(dev, &t->mmio);
> - qemu_register_reset(etraxfs_timer_reset, t);
> - return 0;
> }
>
> static void etraxfs_timer_class_init(ObjectClass *klass, void *data)
> {
> - SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
> + DeviceClass *dc = DEVICE_CLASS(klass);
>
> - sdc->init = etraxfs_timer_init;
> + dc->reset = etraxfs_timer_reset;
> }
>
> static const TypeInfo etraxfs_timer_info = {
> .name = TYPE_ETRAX_FS_TIMER,
> .parent = TYPE_SYS_BUS_DEVICE,
> .instance_size = sizeof(ETRAXTimerState),
> + .instance_init = etraxfs_timer_init,
> .class_init = etraxfs_timer_class_init,
> };
>
> --
> 2.1.4
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/*
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
` (8 preceding siblings ...)
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 09/16] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
@ 2016-02-18 14:16 ` Peter Maydell
9 siblings, 0 replies; 12+ messages in thread
From: Peter Maydell @ 2016-02-18 14:16 UTC (permalink / raw)
To: xiaoqiang zhao
Cc: Evgeny Voevodin, Mark Cave-Ayland, QEMU Developers,
Michael Walle, qemu-arm, Edgar E. Iglesias, Guan Xuetao,
Andreas Färber
On 16 February 2016 at 11:09, xiaoqiang zhao <zxq_yx_007@163.com> wrote:
> This patch series QOM'ify timer code under hw/timer directory.
> Main idea is to split the initfn's work, some to TypeInfo.instance_init
> and some is placed in DeviceClass::realize.
> Drop the use of SysBusDeviceClass::init if possible.
>
> changes in v3:
> * remove unnecessary OBJECT cast
> * refine some commit message
> * use DeviceClass::vmsd instead of vmstate_register to register
> the VMState if possible
>
> changes in v2:
> fix a stupid typo (timmer->timer)
>
> xiaoqiang zhao (16):
> hw/timer: QOM'ify arm_timer (pass 1)
> hw/timer: QOM'ify arm_timer (pass 2)
> hw/timer: QOM'ify exynos4210_mct
> hw/timer: QOM'ify exynos4210_pwm
> hw/timer: QOM'ify exynos4210_rtc
> hw/timer: QOM'ify pl031
> hw/timer: QOM'ify pxa2xx_timer
I have taken these patches (1, 2, 4, 5, 6, 12, 14) into target-arm.next.
thanks
-- PMM
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2016-02-18 14:16 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-16 11:09 [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 01/16] hw/timer: QOM'ify arm_timer (pass 1) xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 02/16] hw/timer: QOM'ify arm_timer (pass 2) xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 03/16] hw/timer: QOM'ify etraxfs_timer xiaoqiang zhao
2016-02-16 11:24 ` Edgar E. Iglesias
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 04/16] hw/timer: QOM'ify exynos4210_mct xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 05/16] hw/timer: QOM'ify exynos4210_pwm xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 06/16] hw/timer: QOM'ify exynos4210_rtc xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 07/16] hw/timer: QOM'ify grlib_gptimer xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 08/16] hw/timer: QOM'ify lm32_timer xiaoqiang zhao
2016-02-16 11:09 ` [Qemu-devel] [PATCH v3 09/16] hw/timer: QOM'ify m48txx_sysbus (pass 1) xiaoqiang zhao
2016-02-18 14:16 ` [Qemu-devel] [PATCH v3 00/16] QOM'ify hw/timer/* Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.