From 086ede32afc9c70de3d75c4fb91c63db790cbd5c Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 9 Jul 2018 14:51:34 +0100 Subject: ptimer: Add TRIGGER_ONLY_ON_DECREMENT policy option The CMSDK timer behaviour is that an interrupt is triggered when the counter counts down from 1 to 0; however one is not triggered if the counter is manually set to 0 by a guest write to the counter register. Currently ptimer can't handle this; add a policy option to allow a ptimer user to request this behaviour. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Tested-by: Guenter Roeck Message-id: 20180703171044.9503-2-peter.maydell@linaro.org --- include/hw/ptimer.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'include/hw/ptimer.h') diff --git a/include/hw/ptimer.h b/include/hw/ptimer.h index fc4ef5cc1d..0731d9aef1 100644 --- a/include/hw/ptimer.h +++ b/include/hw/ptimer.h @@ -69,6 +69,15 @@ * not the one less. */ #define PTIMER_POLICY_NO_COUNTER_ROUND_DOWN (1 << 4) +/* + * Starting to run with a zero counter, or setting the counter to "0" via + * ptimer_set_count() or ptimer_set_limit() will not trigger the timer + * (though it will cause a reload). Only a counter decrement to "0" + * will cause a trigger. Not compatible with NO_IMMEDIATE_TRIGGER; + * ptimer_init() will assert() that you don't set both. + */ +#define PTIMER_POLICY_TRIGGER_ONLY_ON_DECREMENT (1 << 5) + /* ptimer.c */ typedef struct ptimer_state ptimer_state; typedef void (*ptimer_cb)(void *opaque); -- cgit v1.2.3