drivers/timer: Unify timeout setting APIs
The existing API had two almost identical functions: _set_time() and _timer_idle_enter(). Both simply instruct the timer driver to set the next timer interrupt expiration appropriately so that the call to z_clock_announce() will be made at the requested number of ticks. On most/all hardware, these should be implementable identically. Unfortunately because they are specified differently, existing drivers have implemented them in parallel. Specify a new, unified, z_clock_set_timeout(). Document it clearly for implementors. And provide a shim layer for legacy drivers that will continue to use the old functions. Note that this patch fixes an existing bug found by inspection: the old call to _set_time() out of z_clock_announce() failed to test for the "wait forever" case in the situation where clock_always_on is true, meaning that a system that reached this point and then never set another timeout would freeze its uptime clock incorrectly. Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
parent
fa99ad66d0
commit
ab488277bc
15 changed files with 91 additions and 9 deletions
|
@ -59,6 +59,8 @@
|
|||
|
||||
#include <board.h>
|
||||
|
||||
#include "legacy_api.h"
|
||||
|
||||
#define _ARC_V2_TMR_CTRL_IE 0x1 /* interrupt enable */
|
||||
#define _ARC_V2_TMR_CTRL_NH 0x2 /* count only while not halted */
|
||||
#define _ARC_V2_TMR_CTRL_W 0x4 /* watchdog mode enable */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue