qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-ppc] [PATCH] ppc/spapr: QOM'ify sPAPRRTCState


From: Cédric Le Goater
Subject: [Qemu-ppc] [PATCH] ppc/spapr: QOM'ify sPAPRRTCState
Date: Fri, 3 Mar 2017 14:37:34 +0100

Also use an 'Object *' under the sPAPR machine to hold the RTC
object. Overall, these changes remove an unnecessary and implicit
dependency on SysBus.

Signed-off-by: Cédric Le Goater <address@hidden>
---
 hw/ppc/spapr.c         |   12 +++++++-----
 hw/ppc/spapr_rtc.c     |   10 +++++-----
 include/hw/ppc/spapr.h |    6 +++---
 include/hw/ppc/xics.h  |    2 +-
 4 files changed, 16 insertions(+), 14 deletions(-)

Index: qemu-dgibson-for-2.9.git/include/hw/ppc/xics.h
===================================================================
--- qemu-dgibson-for-2.9.git.orig/include/hw/ppc/xics.h
+++ qemu-dgibson-for-2.9.git/include/hw/ppc/xics.h
@@ -28,7 +28,7 @@
 #ifndef XICS_H
 #define XICS_H
 
-#include "hw/sysbus.h"
+#include "hw/qdev.h"
 
 #define XICS_IPI        0x2
 #define XICS_BUID       0x1
Index: qemu-dgibson-for-2.9.git/hw/ppc/spapr_rtc.c
===================================================================
--- qemu-dgibson-for-2.9.git.orig/hw/ppc/spapr_rtc.c
+++ qemu-dgibson-for-2.9.git/hw/ppc/spapr_rtc.c
@@ -39,11 +39,11 @@
 typedef struct sPAPRRTCState sPAPRRTCState;
 struct sPAPRRTCState {
     /*< private >*/
-    SysBusDevice parent_obj;
+    DeviceState parent_obj;
     int64_t ns_offset;
 };
 
-void spapr_rtc_read(DeviceState *dev, struct tm *tm, uint32_t *ns)
+void spapr_rtc_read(Object *dev, struct tm *tm, uint32_t *ns)
 {
     sPAPRRTCState *rtc = SPAPR_RTC(dev);
     int64_t host_ns = qemu_clock_get_ns(rtc_clock);
@@ -63,7 +63,7 @@ void spapr_rtc_read(DeviceState *dev, st
     }
 }
 
-int spapr_rtc_import_offset(DeviceState *dev, int64_t legacy_offset)
+int spapr_rtc_import_offset(Object *dev, int64_t legacy_offset)
 {
     sPAPRRTCState *rtc;
 
@@ -155,7 +155,7 @@ static void rtas_set_time_of_day(PowerPC
 
 static void spapr_rtc_qom_date(Object *obj, struct tm *current_tm, Error 
**errp)
 {
-    spapr_rtc_read(DEVICE(obj), current_tm, NULL);
+    spapr_rtc_read(obj, current_tm, NULL);
 }
 
 static void spapr_rtc_realize(DeviceState *dev, Error **errp)
@@ -200,7 +200,7 @@ static void spapr_rtc_class_init(ObjectC
 
 static const TypeInfo spapr_rtc_info = {
     .name          = TYPE_SPAPR_RTC,
-    .parent        = TYPE_SYS_BUS_DEVICE,
+    .parent        = TYPE_DEVICE,
     .instance_size = sizeof(sPAPRRTCState),
     .class_init    = spapr_rtc_class_init,
 };
Index: qemu-dgibson-for-2.9.git/hw/ppc/spapr.c
===================================================================
--- qemu-dgibson-for-2.9.git.orig/hw/ppc/spapr.c
+++ qemu-dgibson-for-2.9.git/hw/ppc/spapr.c
@@ -1333,13 +1333,15 @@ static void spapr_create_nvram(sPAPRMach
 
 static void spapr_rtc_create(sPAPRMachineState *spapr)
 {
-    DeviceState *dev = qdev_create(NULL, TYPE_SPAPR_RTC);
+    Object *obj = object_new(TYPE_SPAPR_RTC);
 
-    qdev_init_nofail(dev);
-    spapr->rtc = dev;
+    object_property_add_child(OBJECT(spapr), "rtc", obj, &error_fatal);
+    object_property_set_bool(obj, true, "realized", &error_fatal);
 
-    object_property_add_alias(qdev_get_machine(), "rtc-time",
-                              OBJECT(spapr->rtc), "date", NULL);
+    spapr->rtc = obj;
+
+    object_property_add_alias(OBJECT(spapr), "rtc-time", spapr->rtc, "date",
+                               &error_fatal);
 }
 
 /* Returns whether we want to use VGA or not */
Index: qemu-dgibson-for-2.9.git/include/hw/ppc/spapr.h
===================================================================
--- qemu-dgibson-for-2.9.git.orig/include/hw/ppc/spapr.h
+++ qemu-dgibson-for-2.9.git/include/hw/ppc/spapr.h
@@ -59,7 +59,7 @@ struct sPAPRMachineState {
     QLIST_HEAD(, sPAPRPHBState) phbs;
     struct sPAPRNVRAM *nvram;
     ICSState *ics;
-    DeviceState *rtc;
+    Object *rtc;
 
     void *htab;
     uint32_t htab_shift;
@@ -633,8 +633,8 @@ void spapr_ccs_reset_hook(void *opaque);
 #define TYPE_SPAPR_RTC "spapr-rtc"
 #define TYPE_SPAPR_RNG "spapr-rng"
 
-void spapr_rtc_read(DeviceState *dev, struct tm *tm, uint32_t *ns);
-int spapr_rtc_import_offset(DeviceState *dev, int64_t legacy_offset);
+void spapr_rtc_read(Object *obj, struct tm *tm, uint32_t *ns);
+int spapr_rtc_import_offset(Object *obj, int64_t legacy_offset);
 
 int spapr_rng_populate_dt(void *fdt);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]