Signed-off-by: Igor Mammedov <[email protected]>
---
hw/watchdog/sbsa_gwdt.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c
index 40d80f7f2b..91f9a4202c 100644
--- a/hw/watchdog/sbsa_gwdt.c
+++ b/hw/watchdog/sbsa_gwdt.c
@@ -105,25 +105,27 @@ static void sbsa_gwdt_update_timer(SBSA_GWDTState *s,
WdtRefreshType rtype)
timer_del(s->timer);
- if (s->wcs & SBSA_GWDT_WCS_EN) {
- /*
- * Extract the upper 16 bits from woru & 32 bits from worl
- * registers to construct the 48 bit offset value
- */
- timeout = s->woru;
- timeout <<= 32;
- timeout |= s->worl;
- timeout = muldiv64(timeout, NANOSECONDS_PER_SECOND, s->freq);
- timeout += qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
-
- if ((rtype == EXPLICIT_REFRESH) || ((rtype == TIMEOUT_REFRESH) &&
- (!(s->wcs & SBSA_GWDT_WCS_WS0)))) {
- /* store the current timeout value into compare registers */
- s->wcvu = timeout >> 32;
- s->wcvl = timeout;
- }
- timer_mod(s->timer, timeout);
+ if (!(s->wcs & SBSA_GWDT_WCS_EN)) {
+ return;
+ }
+
+ /*
+ * Extract the upper 16 bits from woru & 32 bits from worl
+ * registers to construct the 48 bit offset value
+ */
+ timeout = s->woru;
+ timeout <<= 32;
+ timeout |= s->worl;
+ timeout = muldiv64(timeout, NANOSECONDS_PER_SECOND, s->freq);
+ timeout += qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+
+ if ((rtype == EXPLICIT_REFRESH) || ((rtype == TIMEOUT_REFRESH) &&
+ (!(s->wcs & SBSA_GWDT_WCS_WS0)))) {
+ /* store the current timeout value into compare registers */
+ s->wcvu = timeout >> 32;
+ s->wcvl = timeout;
}
+ timer_mod(s->timer, timeout);
}
static void sbsa_gwdt_rwrite(void *opaque, hwaddr offset, uint64_t data,
--
2.47.3