Merge tag 'timers-core-2023-09-04-v2' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / drivers / clocksource / arm_arch_timer.c
index e733a2a1927a402f70e14585a2f98a76e6767cb7..7dd2c615bce231322ad25519e10d4a46de987f1e 100644 (file)
@@ -792,6 +792,13 @@ static __always_inline void set_next_event_mem(const int access, unsigned long e
        u64 cnt;
 
        ctrl = arch_timer_reg_read(access, ARCH_TIMER_REG_CTRL, clk);
+
+       /* Timer must be disabled before programming CVAL */
+       if (ctrl & ARCH_TIMER_CTRL_ENABLE) {
+               ctrl &= ~ARCH_TIMER_CTRL_ENABLE;
+               arch_timer_reg_write(access, ARCH_TIMER_REG_CTRL, ctrl, clk);
+       }
+
        ctrl |= ARCH_TIMER_CTRL_ENABLE;
        ctrl &= ~ARCH_TIMER_CTRL_IT_MASK;