[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH 03/12] hw/i2c: QOM'ify omap_i2c.c
From: |
xiaoqiang zhao |
Subject: |
[Qemu-arm] [PATCH 03/12] hw/i2c: QOM'ify omap_i2c.c |
Date: |
Mon, 13 Jun 2016 18:32:02 +0800 |
* Split the omap_i2c_init into an instance_init and realize function
* Drop the old SysBus init function and use instance_init
Signed-off-by: xiaoqiang zhao <address@hidden>
---
hw/i2c/omap_i2c.c | 44 ++++++++++++++++++++++++++------------------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index 67fbbff..f7c92ea 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -22,6 +22,7 @@
#include "hw/arm/omap.h"
#include "hw/sysbus.h"
#include "qemu/error-report.h"
+#include "qapi/error.h"
#define TYPE_OMAP_I2C "omap_i2c"
#define OMAP_I2C(obj) OBJECT_CHECK(OMAPI2CState, (obj), TYPE_OMAP_I2C)
@@ -445,29 +446,35 @@ static const MemoryRegionOps omap_i2c_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static int omap_i2c_init(SysBusDevice *sbd)
+static void omap_i2c_init(Object *obj)
{
- DeviceState *dev = DEVICE(sbd);
- OMAPI2CState *s = OMAP_I2C(dev);
-
- if (!s->fclk) {
- error_report("omap_i2c: fclk not connected");
- return -1;
- }
- if (s->revision >= OMAP2_INTR_REV && !s->iclk) {
- /* Note that OMAP1 doesn't have a separate interface clock */
- error_report("omap_i2c: iclk not connected");
- return -1;
- }
+ DeviceState *dev = DEVICE(obj);
+ OMAPI2CState *s = OMAP_I2C(obj);
+ SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
sysbus_init_irq(sbd, &s->irq);
sysbus_init_irq(sbd, &s->drq[0]);
sysbus_init_irq(sbd, &s->drq[1]);
- memory_region_init_io(&s->iomem, OBJECT(s), &omap_i2c_ops, s, "omap.i2c",
- (s->revision < OMAP2_INTR_REV) ? 0x800 : 0x1000);
sysbus_init_mmio(sbd, &s->iomem);
s->bus = i2c_init_bus(dev, NULL);
- return 0;
+}
+
+static void omap_i2c_realize(DeviceState *dev, Error **errp)
+{
+ OMAPI2CState *s = OMAP_I2C(dev);
+
+ memory_region_init_io(&s->iomem, OBJECT(dev), &omap_i2c_ops, s, "omap.i2c",
+ (s->revision < OMAP2_INTR_REV) ? 0x800 : 0x1000);
+
+ if (!s->fclk) {
+ error_setg(errp, "omap_i2c: fclk not connected");
+ return;
+ }
+ if (s->revision >= OMAP2_INTR_REV && !s->iclk) {
+ /* Note that OMAP1 doesn't have a separate interface clock */
+ error_setg(errp, "omap_i2c: iclk not connected");
+ return;
+ }
}
static Property omap_i2c_properties[] = {
@@ -480,18 +487,19 @@ static Property omap_i2c_properties[] = {
static void omap_i2c_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
- k->init = omap_i2c_init;
+
dc->props = omap_i2c_properties;
dc->reset = omap_i2c_reset;
/* Reason: pointer properties "iclk", "fclk" */
dc->cannot_instantiate_with_device_add_yet = true;
+ dc->realize = omap_i2c_realize;
}
static const TypeInfo omap_i2c_info = {
.name = TYPE_OMAP_I2C,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(OMAPI2CState),
+ .instance_init = omap_i2c_init,
.class_init = omap_i2c_class_init,
};
--
2.1.4
- [Qemu-arm] [PATCH 00/12] some ARM platform QOM'ify work (update), xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 01/12] hw/i2c: QOM'ify bitbang_i2c.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 06/12] hw/gpio: QOM'ify pl061.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 09/12] hw/misc: QOM'ify exynos4210_pmu.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 10/12] hw/misc: QOM'ify mst_fpga.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 07/12] hw/gpio: QOM'ify zaurus.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 03/12] hw/i2c: QOM'ify omap_i2c.c,
xiaoqiang zhao <=
- [Qemu-arm] [PATCH 04/12] hw/i2c: QOM'ify versatile_i2c.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 02/12] hw/i2c: QOM'ify exynos4210_i2c.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 08/12] hw/misc: QOM'ify arm_l2x0.c, xiaoqiang zhao, 2016/06/13
- [Qemu-arm] [PATCH 05/12] hw/gpio: QOM'ify omap_gpio.c, xiaoqiang zhao, 2016/06/13
- Re: [Qemu-arm] [Qemu-devel] [PATCH 00/12] some ARM platform QOM'ify work (update), xiaoqiang zhao, 2016/06/13