Message ID | 20210121190622.22000-10-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Convert CMSDK timer, watchdog, dualtimer to Clock framework | expand |
On 1/21/21 8:06 PM, 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.maydell@linaro.org> > --- > include/hw/watchdog/cmsdk-apb-watchdog.h | 3 +++ > hw/watchdog/cmsdk-apb-watchdog.c | 7 +++++-- > 2 files changed, 8 insertions(+), 2 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
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.maydell@linaro.org> Reviewed-by: Luc Michel <luc@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 > --
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),
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.maydell@linaro.org> --- include/hw/watchdog/cmsdk-apb-watchdog.h | 3 +++ hw/watchdog/cmsdk-apb-watchdog.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-)