hw/timer/cmsdk-apb-timer: run or stop timer on writes to RELOAD and VALUE
commit1a9b30646edd8d10caaa9727611750bf57d08c74
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 9 Jul 2018 13:51:34 +0000 (9 14:51 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 9 Jul 2018 13:51:34 +0000 (9 14:51 +0100)
tree06d6df51b6baf6dcdefd48c8635cb535284b27d2
parent0e256833085cc9d292e59a5bda9b886fd09a5f83
hw/timer/cmsdk-apb-timer: run or stop timer on writes to RELOAD and VALUE

If the CMSDK APB timer is set up with a zero RELOAD value
then it will count down to zero, fire once and then stay
at zero. From the point of view of the ptimer system, the
timer is disabled; but the enable bit in the CTRL register
is still set and if the guest subsequently writes to the
RELOAD or VALUE registers this should cause the timer to
start counting down again.

Add code to the write paths for RELOAD and VALUE so that
we correctly restart the timer in this situation.

Conversely, if the new RELOAD and VALUE are both zero,
we should stop the ptimer.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Message-id: 20180703171044.9503-5-peter.maydell@linaro.org
hw/timer/cmsdk-apb-timer.c