From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWjzw-0001zX-Vp for qemu-devel@nongnu.org; Mon, 29 Apr 2013 05:03:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UWjgl-0001Da-9n for qemu-devel@nongnu.org; Mon, 29 Apr 2013 04:44:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55190) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWjgk-0001Cg-VC for qemu-devel@nongnu.org; Mon, 29 Apr 2013 04:43:59 -0400 Date: Mon, 29 Apr 2013 10:43:52 +0200 From: Igor Mammedov Message-ID: <20130429104353.54a03529@thinkpad> In-Reply-To: <1367093935-29091-9-git-send-email-afaerber@suse.de> References: <1367093935-29091-1-git-send-email-afaerber@suse.de> <1367093935-29091-9-git-send-email-afaerber@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH for-1.5 v2 08/20] mc146818rtc: QOM'ify List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?ISO-8859-1?B?RuRyYmVy?= Cc: qemu-devel@nongnu.org On Sat, 27 Apr 2013 22:18:43 +0200 Andreas F=E4rber wrote: > Introduce type constant and cast macro to obsolete DO_UPCAST(). >=20 > Prepares for ISA realizefn. >=20 > Signed-off-by: Andreas F=E4rber > --- > hw/timer/mc146818rtc.c | 36 ++++++++++++++++++++---------------- > include/hw/timer/mc146818rtc.h | 2 ++ > 2 files changed, 22 insertions(+), 16 deletions(-) >=20 > diff --git a/hw/timer/mc146818rtc.c b/hw/timer/mc146818rtc.c > index 69e6844..afbd0db 100644 > --- a/hw/timer/mc146818rtc.c > +++ b/hw/timer/mc146818rtc.c > @@ -57,8 +57,11 @@ > #define RTC_CLOCK_RATE 32768 > #define UIP_HOLD_LENGTH (8 * NSEC_PER_SEC / 32768) > =20 > +#define MC146818_RTC(obj) OBJECT_CHECK(RTCState, (obj), TYPE_MC146818_RT= C) > + > typedef struct RTCState { > - ISADevice dev; > + ISADevice parent_obj; > + > MemoryRegion io; > uint8_t cmos_data[128]; > uint8_t cmos_index; > @@ -672,14 +675,14 @@ static uint64_t cmos_ioport_read(void *opaque, hwad= dr addr, > =20 > void rtc_set_memory(ISADevice *dev, int addr, int val) > { > - RTCState *s =3D DO_UPCAST(RTCState, dev, dev); > + RTCState *s =3D MC146818_RTC(dev); > if (addr >=3D 0 && addr <=3D 127) > s->cmos_data[addr] =3D val; > } > =20 > static void rtc_set_date_from_host(ISADevice *dev) > { > - RTCState *s =3D DO_UPCAST(RTCState, dev, dev); > + RTCState *s =3D MC146818_RTC(dev); > struct tm tm; > =20 > qemu_get_timedate(&tm, 0); > @@ -741,7 +744,7 @@ static void rtc_notify_clock_reset(Notifier *notifier= , void *data) > RTCState *s =3D container_of(notifier, RTCState, clock_reset_notifie= r); > int64_t now =3D *(int64_t *)data; > =20 > - rtc_set_date_from_host(&s->dev); > + rtc_set_date_from_host(ISA_DEVICE(s)); > periodic_timer_update(s, now); > check_update_timer(s); > #ifdef TARGET_I386 > @@ -756,7 +759,7 @@ static void rtc_notify_clock_reset(Notifier *notifier= , void *data) > static void rtc_notify_suspend(Notifier *notifier, void *data) > { > RTCState *s =3D container_of(notifier, RTCState, suspend_notifier); > - rtc_set_memory(&s->dev, 0xF, 0xFE); > + rtc_set_memory(ISA_DEVICE(s), 0xF, 0xFE); > } > =20 > static void rtc_reset(void *opaque) > @@ -789,8 +792,7 @@ static const MemoryRegionOps cmos_ops =3D { > static void rtc_get_date(Object *obj, Visitor *v, void *opaque, > const char *name, Error **errp) > { > - ISADevice *isa =3D ISA_DEVICE(obj); > - RTCState *s =3D DO_UPCAST(RTCState, dev, isa); > + RTCState *s =3D MC146818_RTC(obj); > struct tm current_tm; > =20 > rtc_update_time(s); > @@ -807,7 +809,7 @@ static void rtc_get_date(Object *obj, Visitor *v, voi= d *opaque, > =20 > static int rtc_initfn(ISADevice *dev) > { > - RTCState *s =3D DO_UPCAST(RTCState, dev, dev); > + RTCState *s =3D MC146818_RTC(dev); > int base =3D 0x70; > =20 > s->cmos_data[RTC_REG_A] =3D 0x26; > @@ -866,19 +868,21 @@ static int rtc_initfn(ISADevice *dev) > =20 > ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq) > { > - ISADevice *dev; > + DeviceState *dev; > + ISADevice *isadev; > RTCState *s; > =20 > - dev =3D isa_create(bus, "mc146818rtc"); > - s =3D DO_UPCAST(RTCState, dev, dev); > - qdev_prop_set_int32(&dev->qdev, "base_year", base_year); > - qdev_init_nofail(&dev->qdev); > + isadev =3D isa_create(bus, TYPE_MC146818_RTC); > + dev =3D DEVICE(isadev); > + s =3D MC146818_RTC(isadev); > + qdev_prop_set_int32(dev, "base_year", base_year); > + qdev_init_nofail(dev); > if (intercept_irq) { > s->irq =3D intercept_irq; > } else { > - isa_init_irq(dev, &s->irq, RTC_ISA_IRQ); > + isa_init_irq(isadev, &s->irq, RTC_ISA_IRQ); > } > - return dev; > + return isadev; > } > =20 > static Property mc146818rtc_properties[] =3D { > @@ -899,7 +903,7 @@ static void rtc_class_initfn(ObjectClass *klass, void= *data) > } > =20 > static const TypeInfo mc146818rtc_info =3D { > - .name =3D "mc146818rtc", > + .name =3D TYPE_MC146818_RTC, > .parent =3D TYPE_ISA_DEVICE, > .instance_size =3D sizeof(RTCState), > .class_init =3D rtc_class_initfn, > diff --git a/include/hw/timer/mc146818rtc.h b/include/hw/timer/mc146818rt= c.h > index 854ea3f..425bd17 100644 > --- a/include/hw/timer/mc146818rtc.h > +++ b/include/hw/timer/mc146818rtc.h > @@ -4,6 +4,8 @@ > #include "hw/isa/isa.h" > #include "hw/timer/mc146818rtc_regs.h" > =20 > +#define TYPE_MC146818_RTC "mc146818rtc" > + > ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq); > void rtc_set_memory(ISADevice *dev, int addr, int val); > void rtc_set_date(ISADevice *dev, const struct tm *tm); > --=20 > 1.8.1.4 >=20 >=20 Reviewed-By: Igor Mammedov --=20 Regards, Igor