qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH qom-next for-1.6 0/3] input: QOM cast cleanups
@ 2013-07-26 16:54 Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 1/3] milkymist-softusb: QOM cast cleanup Andreas Färber
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Andreas Färber @ 2013-07-26 16:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Hu Tao, Andreas Färber

Hello,

This series eliminates FROM_SYSBUS() in hw/input/.

Regards,
Andreas

Cc: Hu Tao <hutao@cn.fujitsu.com>

Andreas Färber (3):
  milkymist-softusb: QOM cast cleanup
  pl050: Rename pl050_state to PL050State
  pl050: QOM'ify pl050_keyboard and pl050_mouse

 hw/input/milkymist-softusb.c | 14 +++++---
 hw/input/pl050.c             | 82 ++++++++++++++++++++++++--------------------
 2 files changed, 53 insertions(+), 43 deletions(-)

-- 
1.8.1.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH qom-next for-1.6 1/3] milkymist-softusb: QOM cast cleanup
  2013-07-26 16:54 [Qemu-devel] [PATCH qom-next for-1.6 0/3] input: QOM cast cleanups Andreas Färber
@ 2013-07-26 16:54 ` Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 2/3] pl050: Rename pl050_state to PL050State Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 3/3] pl050: QOM'ify pl050_keyboard and pl050_mouse Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Andreas Färber @ 2013-07-26 16:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Andreas Färber

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/input/milkymist-softusb.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 942cb79..ecde33c 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -44,8 +44,13 @@ enum {
 #define COMLOC_KEVT_PRODUCE  0x1142
 #define COMLOC_KEVT_BASE     0x1143
 
+#define TYPE_MILKYMIST_SOFTUSB "milkymist-softusb"
+#define MILKYMIST_SOFTUSB(obj) \
+    OBJECT_CHECK(MilkymistSoftUsbState, (obj), TYPE_MILKYMIST_SOFTUSB)
+
 struct MilkymistSoftUsbState {
-    SysBusDevice busdev;
+    SysBusDevice parent_obj;
+
     HIDState hid_kbd;
     HIDState hid_mouse;
 
@@ -242,8 +247,7 @@ static void softusb_mouse_hid_datain(HIDState *hs)
 
 static void milkymist_softusb_reset(DeviceState *d)
 {
-    MilkymistSoftUsbState *s =
-            container_of(d, MilkymistSoftUsbState, busdev.qdev);
+    MilkymistSoftUsbState *s = MILKYMIST_SOFTUSB(d);
     int i;
 
     for (i = 0; i < R_MAX; i++) {
@@ -261,7 +265,7 @@ static void milkymist_softusb_reset(DeviceState *d)
 
 static int milkymist_softusb_init(SysBusDevice *dev)
 {
-    MilkymistSoftUsbState *s = FROM_SYSBUS(typeof(*s), dev);
+    MilkymistSoftUsbState *s = MILKYMIST_SOFTUSB(dev);
 
     sysbus_init_irq(dev, &s->irq);
 
@@ -320,7 +324,7 @@ static void milkymist_softusb_class_init(ObjectClass *klass, void *data)
 }
 
 static const TypeInfo milkymist_softusb_info = {
-    .name          = "milkymist-softusb",
+    .name          = TYPE_MILKYMIST_SOFTUSB,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(MilkymistSoftUsbState),
     .class_init    = milkymist_softusb_class_init,
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH qom-next for-1.6 2/3] pl050: Rename pl050_state to PL050State
  2013-07-26 16:54 [Qemu-devel] [PATCH qom-next for-1.6 0/3] input: QOM cast cleanups Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 1/3] milkymist-softusb: QOM cast cleanup Andreas Färber
@ 2013-07-26 16:54 ` Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 3/3] pl050: QOM'ify pl050_keyboard and pl050_mouse Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Andreas Färber @ 2013-07-26 16:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Andreas Färber

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/input/pl050.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/hw/input/pl050.c b/hw/input/pl050.c
index 2312ffc..8493abd 100644
--- a/hw/input/pl050.c
+++ b/hw/input/pl050.c
@@ -10,7 +10,7 @@
 #include "hw/sysbus.h"
 #include "hw/input/ps2.h"
 
-typedef struct {
+typedef struct PL050State {
     SysBusDevice busdev;
     MemoryRegion iomem;
     void *dev;
@@ -20,17 +20,17 @@ typedef struct {
     int pending;
     qemu_irq irq;
     int is_mouse;
-} pl050_state;
+} PL050State;
 
 static const VMStateDescription vmstate_pl050 = {
     .name = "pl050",
     .version_id = 2,
     .minimum_version_id = 2,
     .fields = (VMStateField[]) {
-        VMSTATE_UINT32(cr, pl050_state),
-        VMSTATE_UINT32(clk, pl050_state),
-        VMSTATE_UINT32(last, pl050_state),
-        VMSTATE_INT32(pending, pl050_state),
+        VMSTATE_UINT32(cr, PL050State),
+        VMSTATE_UINT32(clk, PL050State),
+        VMSTATE_UINT32(last, PL050State),
+        VMSTATE_INT32(pending, PL050State),
         VMSTATE_END_OF_LIST()
     }
 };
@@ -48,7 +48,7 @@ static const unsigned char pl050_id[] =
 
 static void pl050_update(void *opaque, int level)
 {
-    pl050_state *s = (pl050_state *)opaque;
+    PL050State *s = (PL050State *)opaque;
     int raise;
 
     s->pending = level;
@@ -60,7 +60,7 @@ static void pl050_update(void *opaque, int level)
 static uint64_t pl050_read(void *opaque, hwaddr offset,
                            unsigned size)
 {
-    pl050_state *s = (pl050_state *)opaque;
+    PL050State *s = (PL050State *)opaque;
     if (offset >= 0xfe0 && offset < 0x1000)
         return pl050_id[(offset - 0xfe0) >> 2];
 
@@ -103,7 +103,7 @@ static uint64_t pl050_read(void *opaque, hwaddr offset,
 static void pl050_write(void *opaque, hwaddr offset,
                         uint64_t value, unsigned size)
 {
-    pl050_state *s = (pl050_state *)opaque;
+    PL050State *s = (PL050State *)opaque;
     switch (offset >> 2) {
     case 0: /* KMICR */
         s->cr = value;
@@ -135,7 +135,7 @@ static const MemoryRegionOps pl050_ops = {
 
 static int pl050_init(SysBusDevice *dev, int is_mouse)
 {
-    pl050_state *s = FROM_SYSBUS(pl050_state, dev);
+    PL050State *s = FROM_SYSBUS(PL050State, dev);
 
     memory_region_init_io(&s->iomem, OBJECT(s), &pl050_ops, s, "pl050", 0x1000);
     sysbus_init_mmio(dev, &s->iomem);
@@ -170,7 +170,7 @@ static void pl050_kbd_class_init(ObjectClass *klass, void *data)
 static const TypeInfo pl050_kbd_info = {
     .name          = "pl050_keyboard",
     .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(pl050_state),
+    .instance_size = sizeof(PL050State),
     .class_init    = pl050_kbd_class_init,
 };
 
@@ -186,7 +186,7 @@ static void pl050_mouse_class_init(ObjectClass *klass, void *data)
 static const TypeInfo pl050_mouse_info = {
     .name          = "pl050_mouse",
     .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(pl050_state),
+    .instance_size = sizeof(PL050State),
     .class_init    = pl050_mouse_class_init,
 };
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH qom-next for-1.6 3/3] pl050: QOM'ify pl050_keyboard and pl050_mouse
  2013-07-26 16:54 [Qemu-devel] [PATCH qom-next for-1.6 0/3] input: QOM cast cleanups Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 1/3] milkymist-softusb: QOM cast cleanup Andreas Färber
  2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 2/3] pl050: Rename pl050_state to PL050State Andreas Färber
@ 2013-07-26 16:54 ` Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Andreas Färber @ 2013-07-26 16:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Andreas Färber

Introduce an abstract type pl050 and let pl050_keyboar and pl050_mouse
inherit from it, using different instance_init functions.
Introduce a type constant and use QOM casts.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/input/pl050.c | 62 +++++++++++++++++++++++++++++++-------------------------
 1 file changed, 34 insertions(+), 28 deletions(-)

diff --git a/hw/input/pl050.c b/hw/input/pl050.c
index 8493abd..c1b08d5 100644
--- a/hw/input/pl050.c
+++ b/hw/input/pl050.c
@@ -10,8 +10,12 @@
 #include "hw/sysbus.h"
 #include "hw/input/ps2.h"
 
+#define TYPE_PL050 "pl050"
+#define PL050(obj) OBJECT_CHECK(PL050State, (obj), TYPE_PL050)
+
 typedef struct PL050State {
-    SysBusDevice busdev;
+    SysBusDevice parent_obj;
+
     MemoryRegion iomem;
     void *dev;
     uint32_t cr;
@@ -19,7 +23,7 @@ typedef struct PL050State {
     uint32_t last;
     int pending;
     qemu_irq irq;
-    int is_mouse;
+    bool is_mouse;
 } PL050State;
 
 static const VMStateDescription vmstate_pl050 = {
@@ -133,65 +137,67 @@ static const MemoryRegionOps pl050_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static int pl050_init(SysBusDevice *dev, int is_mouse)
+static int pl050_initfn(SysBusDevice *dev)
 {
-    PL050State *s = FROM_SYSBUS(PL050State, dev);
+    PL050State *s = PL050(dev);
 
     memory_region_init_io(&s->iomem, OBJECT(s), &pl050_ops, s, "pl050", 0x1000);
     sysbus_init_mmio(dev, &s->iomem);
     sysbus_init_irq(dev, &s->irq);
-    s->is_mouse = is_mouse;
-    if (s->is_mouse)
+    if (s->is_mouse) {
         s->dev = ps2_mouse_init(pl050_update, s);
-    else
+    } else {
         s->dev = ps2_kbd_init(pl050_update, s);
+    }
     return 0;
 }
 
-static int pl050_init_keyboard(SysBusDevice *dev)
+static void pl050_keyboard_init(Object *obj)
 {
-    return pl050_init(dev, 0);
-}
+    PL050State *s = PL050(obj);
 
-static int pl050_init_mouse(SysBusDevice *dev)
-{
-    return pl050_init(dev, 1);
+    s->is_mouse = false;
 }
 
-static void pl050_kbd_class_init(ObjectClass *klass, void *data)
+static void pl050_mouse_init(Object *obj)
 {
-    DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
+    PL050State *s = PL050(obj);
 
-    k->init = pl050_init_keyboard;
-    dc->vmsd = &vmstate_pl050;
+    s->is_mouse = true;
 }
 
 static const TypeInfo pl050_kbd_info = {
     .name          = "pl050_keyboard",
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(PL050State),
-    .class_init    = pl050_kbd_class_init,
+    .parent        = TYPE_PL050,
+    .instance_init = pl050_keyboard_init,
 };
 
-static void pl050_mouse_class_init(ObjectClass *klass, void *data)
+static const TypeInfo pl050_mouse_info = {
+    .name          = "pl050_mouse",
+    .parent        = TYPE_PL050,
+    .instance_init = pl050_mouse_init,
+};
+
+static void pl050_class_init(ObjectClass *oc, void *data)
 {
-    DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
+    DeviceClass *dc = DEVICE_CLASS(oc);
+    SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(oc);
 
-    k->init = pl050_init_mouse;
+    sdc->init = pl050_initfn;
     dc->vmsd = &vmstate_pl050;
 }
 
-static const TypeInfo pl050_mouse_info = {
-    .name          = "pl050_mouse",
+static const TypeInfo pl050_type_info = {
+    .name          = TYPE_PL050,
     .parent        = TYPE_SYS_BUS_DEVICE,
     .instance_size = sizeof(PL050State),
-    .class_init    = pl050_mouse_class_init,
+    .abstract      = true,
+    .class_init    = pl050_class_init,
 };
 
 static void pl050_register_types(void)
 {
+    type_register_static(&pl050_type_info);
     type_register_static(&pl050_kbd_info);
     type_register_static(&pl050_mouse_info);
 }
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-07-26 16:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-26 16:54 [Qemu-devel] [PATCH qom-next for-1.6 0/3] input: QOM cast cleanups Andreas Färber
2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 1/3] milkymist-softusb: QOM cast cleanup Andreas Färber
2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 2/3] pl050: Rename pl050_state to PL050State Andreas Färber
2013-07-26 16:54 ` [Qemu-devel] [PATCH qom-next for-1.6 3/3] pl050: QOM'ify pl050_keyboard and pl050_mouse Andreas Färber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).