[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 160/173] pxa2xx_timer: QOM'ify pxa25x-timer and pxa27
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL 160/173] pxa2xx_timer: QOM'ify pxa25x-timer and pxa27x-timer |
Date: |
Mon, 29 Jul 2013 21:20:17 +0200 |
Introduce type constant for new abstract base type, use QOM casts and
let both non-abstract types inherit from the new base type.
Signed-off-by: Andreas Färber <address@hidden>
---
hw/timer/pxa2xx_timer.c | 42 +++++++++++++++++++++++++++++-------------
1 file changed, 29 insertions(+), 13 deletions(-)
diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c
index 4d28719..cdabccd 100644
--- a/hw/timer/pxa2xx_timer.c
+++ b/hw/timer/pxa2xx_timer.c
@@ -60,6 +60,10 @@ static int pxa2xx_timer4_freq[8] = {
[5 ... 7] = 0,
};
+#define TYPE_PXA2XX_TIMER "pxa2xx-timer"
+#define PXA2XX_TIMER(obj) \
+ OBJECT_CHECK(PXA2xxTimerInfo, (obj), TYPE_PXA2XX_TIMER)
+
typedef struct PXA2xxTimerInfo PXA2xxTimerInfo;
typedef struct {
@@ -80,7 +84,8 @@ typedef struct {
} PXA2xxTimer4;
struct PXA2xxTimerInfo {
- SysBusDevice busdev;
+ SysBusDevice parent_obj;
+
MemoryRegion iomem;
uint32_t flags;
@@ -429,10 +434,9 @@ static int pxa25x_timer_post_load(void *opaque, int
version_id)
static int pxa2xx_timer_init(SysBusDevice *dev)
{
+ PXA2xxTimerInfo *s = PXA2XX_TIMER(dev);
int i;
- PXA2xxTimerInfo *s;
- s = FROM_SYSBUS(PXA2xxTimerInfo, dev);
s->irq_enabled = 0;
s->oldclock = 0;
s->clock = 0;
@@ -527,24 +531,21 @@ static const VMStateDescription vmstate_pxa2xx_timer_regs
= {
static Property pxa25x_timer_dev_properties[] = {
DEFINE_PROP_UINT32("freq", PXA2xxTimerInfo, freq, PXA25X_FREQ),
DEFINE_PROP_BIT("tm4", PXA2xxTimerInfo, flags,
- PXA2XX_TIMER_HAVE_TM4, false),
+ PXA2XX_TIMER_HAVE_TM4, false),
DEFINE_PROP_END_OF_LIST(),
};
static void pxa25x_timer_dev_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = pxa2xx_timer_init;
dc->desc = "PXA25x timer";
- dc->vmsd = &vmstate_pxa2xx_timer_regs;
dc->props = pxa25x_timer_dev_properties;
}
static const TypeInfo pxa25x_timer_dev_info = {
.name = "pxa25x-timer",
- .parent = TYPE_SYS_BUS_DEVICE,
+ .parent = TYPE_PXA2XX_TIMER,
.instance_size = sizeof(PXA2xxTimerInfo),
.class_init = pxa25x_timer_dev_class_init,
};
@@ -552,30 +553,45 @@ static const TypeInfo pxa25x_timer_dev_info = {
static Property pxa27x_timer_dev_properties[] = {
DEFINE_PROP_UINT32("freq", PXA2xxTimerInfo, freq, PXA27X_FREQ),
DEFINE_PROP_BIT("tm4", PXA2xxTimerInfo, flags,
- PXA2XX_TIMER_HAVE_TM4, true),
+ PXA2XX_TIMER_HAVE_TM4, true),
DEFINE_PROP_END_OF_LIST(),
};
static void pxa27x_timer_dev_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = pxa2xx_timer_init;
dc->desc = "PXA27x timer";
- dc->vmsd = &vmstate_pxa2xx_timer_regs;
dc->props = pxa27x_timer_dev_properties;
}
static const TypeInfo pxa27x_timer_dev_info = {
.name = "pxa27x-timer",
- .parent = TYPE_SYS_BUS_DEVICE,
+ .parent = TYPE_PXA2XX_TIMER,
.instance_size = sizeof(PXA2xxTimerInfo),
.class_init = pxa27x_timer_dev_class_init,
};
+static void pxa2xx_timer_class_init(ObjectClass *oc, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(oc);
+ SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(oc);
+
+ sdc->init = pxa2xx_timer_init;
+ dc->vmsd = &vmstate_pxa2xx_timer_regs;
+}
+
+static const TypeInfo pxa2xx_timer_type_info = {
+ .name = TYPE_PXA2XX_TIMER,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(PXA2xxTimerInfo),
+ .abstract = true,
+ .class_init = pxa2xx_timer_class_init,
+};
+
static void pxa2xx_timer_register_types(void)
{
+ type_register_static(&pxa2xx_timer_type_info);
type_register_static(&pxa25x_timer_dev_info);
type_register_static(&pxa27x_timer_dev_info);
}
--
1.8.1.4
- [Qemu-devel] [PULL 149/173] etraxfs_timer: QOM cast cleanup, (continued)
- [Qemu-devel] [PULL 149/173] etraxfs_timer: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 152/173] exynos4210_rtc: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 151/173] exynos4210_pwm: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 153/173] grlib_gptimer: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 154/173] lm32_timer: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 155/173] m48t59: QOM cast cleanup for M48t59SysBusState, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 156/173] milkymist-sysctl: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 157/173] pl031: Rename pl031_state to PL031State, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 158/173] pl031: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 159/173] puv3_ost: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 160/173] pxa2xx_timer: QOM'ify pxa25x-timer and pxa27x-timer,
Andreas Färber <=
- [Qemu-devel] [PULL 161/173] slavio_timer: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 162/173] tusb6010: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 164/173] sysbus: Drop FROM_SYSBUS(), Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 165/173] sysbus: Remove unused sysbus_new() prototype, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 163/173] xilinx_timer: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 103/173] slavio_intctl: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 099/173] pl190: Rename pl190_state to PL190State, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 173/173] sysbus: QOM parent field cleanup for SysBusDevice, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 169/173] kvmvapic: QOM cast cleanup, Andreas Färber, 2013/07/29
- [Qemu-devel] [PULL 168/173] mipsnet: QOM cast cleanup, Andreas Färber, 2013/07/29