On 19:06 Thu 21 Jan , Peter Maydell wrote: > As the first step in converting the CMSDK_APB_TIMER device to the > Clock framework, add a Clock input. For the moment we do nothing > with this clock; we will change the behaviour from using the > wdogclk-frq property to using the Clock once all the users of this > device have been converted to wire up the Clock. > > This is a migration compatibility break for machines mps2-an385, > mps2-an386, mps2-an500, mps2-an511, mps2-an505, mps2-an521, musca-a, > musca-b1, lm3s811evb, lm3s6965evb. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Luc Michel <l...@lmichel.fr> > --- > include/hw/watchdog/cmsdk-apb-watchdog.h | 3 +++ > hw/watchdog/cmsdk-apb-watchdog.c | 7 +++++-- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/include/hw/watchdog/cmsdk-apb-watchdog.h > b/include/hw/watchdog/cmsdk-apb-watchdog.h > index 3da0d43e355..34069ca6969 100644 > --- a/include/hw/watchdog/cmsdk-apb-watchdog.h > +++ b/include/hw/watchdog/cmsdk-apb-watchdog.h > @@ -17,6 +17,7 @@ > * > * QEMU interface: > * + QOM property "wdogclk-frq": frequency at which the watchdog is clocked > + * + Clock input "WDOGCLK": clock for the watchdog's timer > * + sysbus MMIO region 0: the register bank > * + sysbus IRQ 0: watchdog interrupt > * > @@ -33,6 +34,7 @@ > > #include "hw/sysbus.h" > #include "hw/ptimer.h" > +#include "hw/clock.h" > #include "qom/object.h" > > #define TYPE_CMSDK_APB_WATCHDOG "cmsdk-apb-watchdog" > @@ -54,6 +56,7 @@ struct CMSDKAPBWatchdog { > uint32_t wdogclk_frq; > bool is_luminary; > struct ptimer_state *timer; > + Clock *wdogclk; > > uint32_t control; > uint32_t intstatus; > diff --git a/hw/watchdog/cmsdk-apb-watchdog.c > b/hw/watchdog/cmsdk-apb-watchdog.c > index 5bbadadfa68..b03bcb73628 100644 > --- a/hw/watchdog/cmsdk-apb-watchdog.c > +++ b/hw/watchdog/cmsdk-apb-watchdog.c > @@ -30,6 +30,7 @@ > #include "hw/irq.h" > #include "hw/qdev-properties.h" > #include "hw/registerfields.h" > +#include "hw/qdev-clock.h" > #include "hw/watchdog/cmsdk-apb-watchdog.h" > #include "migration/vmstate.h" > > @@ -318,6 +319,7 @@ static void cmsdk_apb_watchdog_init(Object *obj) > s, "cmsdk-apb-watchdog", 0x1000); > sysbus_init_mmio(sbd, &s->iomem); > sysbus_init_irq(sbd, &s->wdogint); > + s->wdogclk = qdev_init_clock_in(DEVICE(s), "WDOGCLK", NULL, NULL); > > s->is_luminary = false; > s->id = cmsdk_apb_watchdog_id; > @@ -346,9 +348,10 @@ static void cmsdk_apb_watchdog_realize(DeviceState *dev, > Error **errp) > > static const VMStateDescription cmsdk_apb_watchdog_vmstate = { > .name = "cmsdk-apb-watchdog", > - .version_id = 1, > - .minimum_version_id = 1, > + .version_id = 2, > + .minimum_version_id = 2, > .fields = (VMStateField[]) { > + VMSTATE_CLOCK(wdogclk, CMSDKAPBWatchdog), > VMSTATE_PTIMER(timer, CMSDKAPBWatchdog), > VMSTATE_UINT32(control, CMSDKAPBWatchdog), > VMSTATE_UINT32(intstatus, CMSDKAPBWatchdog), > -- > 2.20.1 > --