Lines Matching refs:timer
21 void timer_hardware_alarm_claim(timer_hw_t *timer, uint alarm_num) { in timer_hardware_alarm_claim() argument
23 …hw_claim_or_assert(&claimed[timer_get_index(timer)], alarm_num, "Hardware alarm %d already claimed… in timer_hardware_alarm_claim()
30 void timer_hardware_alarm_unclaim(timer_hw_t *timer, uint alarm_num) { in timer_hardware_alarm_unclaim() argument
32 hw_claim_clear(&claimed[timer_get_index(timer)], alarm_num); in timer_hardware_alarm_unclaim()
39 bool timer_hardware_alarm_is_claimed(timer_hw_t *timer, uint alarm_num) { in timer_hardware_alarm_is_claimed() argument
41 return hw_is_claimed(&claimed[timer_get_index(timer)], alarm_num); in timer_hardware_alarm_is_claimed()
48 int timer_hardware_alarm_claim_unused(timer_hw_t *timer, bool required) { in timer_hardware_alarm_claim_unused() argument
49 …return hw_claim_unused_from_range(&claimed[timer_get_index(timer)], required, 0, NUM_ALARMS - 1, "… in timer_hardware_alarm_claim_unused()
57 uint64_t timer_time_us_64(timer_hw_t *timer) { in timer_time_us_64() argument
60 uint32_t hi = timer->timerawh; in timer_time_us_64()
64 lo = timer->timerawl; in timer_time_us_64()
68 uint32_t next_hi = timer->timerawh; in timer_time_us_64()
77 void timer_busy_wait_us_32(timer_hw_t *timer, uint32_t delay_us) { in timer_busy_wait_us_32() argument
81 uint32_t start = timer->timerawl; in timer_busy_wait_us_32()
82 while (timer->timerawl - start < delay_us) { in timer_busy_wait_us_32()
90 void timer_busy_wait_us(timer_hw_t *timer, uint64_t delay_us) { in timer_busy_wait_us() argument
91 uint64_t base = timer_time_us_64(timer); in timer_busy_wait_us()
98 timer_busy_wait_until(timer, t); in timer_busy_wait_us()
101 void timer_busy_wait_ms(timer_hw_t *timer, uint32_t delay_ms) in timer_busy_wait_ms() argument
104 timer_busy_wait_us_32(timer, delay_ms * 1000); in timer_busy_wait_ms()
106 timer_busy_wait_us(timer, delay_ms * 1000ull); in timer_busy_wait_ms()
110 void timer_busy_wait_until(timer_hw_t *timer, absolute_time_t t) { in timer_busy_wait_until() argument
113 uint32_t hi = timer->timerawh; in timer_busy_wait_until()
115 hi = timer->timerawh; in timer_busy_wait_until()
118 while (hi == hi_target && timer->timerawl < (uint32_t) target) { in timer_busy_wait_until()
119 hi = timer->timerawh; in timer_busy_wait_until()
157 timer_hw_t *timer = timer_get_instance(timer_num); in hardware_alarm_irq_handler() local
164 timer->intr = 1u << alarm_num; in hardware_alarm_irq_handler()
166 hw_clear_bits(&timer->intf, 1u << alarm_num); in hardware_alarm_irq_handler()
172 if (timer->timerawh >= target_hi[timer_num][alarm_num]) { in hardware_alarm_irq_handler()
178 timer->alarm[alarm_num] = timer->alarm[alarm_num]; // re-arm the timer in hardware_alarm_irq_handler()
193 void timer_hardware_alarm_set_callback(timer_hw_t *timer, uint alarm_num, hardware_alarm_callback_t… in timer_hardware_alarm_set_callback() argument
198 uint timer_num = timer_get_index(timer); in timer_hardware_alarm_set_callback()
202 hw_set_bits(&timer->inte, 1u << alarm_num); in timer_hardware_alarm_set_callback()
215 bool timer_hardware_alarm_set_target(timer_hw_t *timer, uint alarm_num, absolute_time_t target) { in timer_hardware_alarm_set_target() argument
217 uint64_t now = timer_time_us_64(timer); in timer_hardware_alarm_set_target()
223 uint timer_num = timer_get_index(timer); in timer_hardware_alarm_set_target()
230 timer->intr = 1u << alarm_num; // clear any IRQ in timer_hardware_alarm_set_target()
231 timer->alarm[alarm_num] = (uint32_t) t; in timer_hardware_alarm_set_target()
236 if (!(timer->armed & 1u << alarm_num)) { in timer_hardware_alarm_set_target()
238 assert(timer->ints & 1u << alarm_num); in timer_hardware_alarm_set_target()
240 if (timer_time_us_64(timer) >= t) { in timer_hardware_alarm_set_target()
247 timer->armed = 1u << alarm_num; in timer_hardware_alarm_set_target()
249 timer->intr = 1u << alarm_num; in timer_hardware_alarm_set_target()
252 irq_clear(timer_hardware_alarm_get_irq_num(timer, alarm_num)); in timer_hardware_alarm_set_target()
269 void timer_hardware_alarm_cancel(timer_hw_t *timer, uint alarm_num) { in timer_hardware_alarm_cancel() argument
274 timer->armed = 1u << alarm_num; in timer_hardware_alarm_cancel()
275 timer_callbacks_pending[timer_get_index(timer)] &= (uint8_t)~(1u << alarm_num); in timer_hardware_alarm_cancel()
283 void timer_hardware_alarm_force_irq(timer_hw_t *timer, uint alarm_num) { in timer_hardware_alarm_force_irq() argument
287 timer_callbacks_pending[timer_get_index(timer)] |= (uint8_t)(1u << alarm_num); in timer_hardware_alarm_force_irq()
289 hw_set_bits(&timer->intf, 1u << alarm_num); in timer_hardware_alarm_force_irq()