Lines Matching defs:timer
16 #include <platsupport/timer.h>
20 * The system timer on the BCM283[5-7] is fairly simple in its nature.
27 int system_timer_init(system_timer_t *timer, system_timer_config_t config) {
28 if (timer == NULL || config.vaddr == NULL) {
32 timer->regs = config.vaddr;
37 uint64_t system_timer_get_time(system_timer_t *timer) {
38 if (timer == NULL) {
42 uint64_t initial_high = timer->regs->counter_high;
43 uint64_t low = timer->regs->counter_low;
44 uint64_t high = timer->regs->counter_high;
47 low = timer->regs->counter_low;
56 int system_timer_set_timeout(system_timer_t *timer, uint64_t ns) {
57 if (timer == NULL) {
62 uint64_t time = system_timer_get_time(timer);
74 timer->regs->ctrl = BIT(SYSTEM_TIMER_MATCH);
77 timer->regs->compare[SYSTEM_TIMER_MATCH] = timeout;
79 time = system_timer_get_time(timer);
80 if (time >= ns && !(timer->regs->ctrl & BIT(SYSTEM_TIMER_MATCH))) {
81 timer->regs->ctrl = BIT(SYSTEM_TIMER_MATCH);
89 int system_timer_handle_irq(system_timer_t *timer) {
90 if (timer == NULL) {
94 timer->regs->ctrl = BIT(SYSTEM_TIMER_MATCH);
99 int system_timer_reset(system_timer_t *timer) {
100 if (timer == NULL) {
104 /* Just clear the one timer that is used. */
105 timer->regs->ctrl = BIT(SYSTEM_TIMER_MATCH);