Lines Matching refs:timer_id
100 static int sedi_hpet_update_comparator(IN sedi_hpet_t timer_id, IN uint64_t value) in sedi_hpet_update_comparator() argument
102 switch (timer_id) { in sedi_hpet_update_comparator()
119 int sedi_hpet_set_comparator(IN sedi_hpet_t timer_id, IN uint64_t value) in sedi_hpet_set_comparator() argument
130 if ((timer_id != HPET_0) && (value >> 32)) { in sedi_hpet_set_comparator()
138 if (timer_id == HPET_0) { in sedi_hpet_set_comparator()
147 return sedi_hpet_update_comparator(timer_id, _value); in sedi_hpet_set_comparator()
175 void sedi_hpet_enable_interrupt(IN sedi_hpet_t timer_id) in sedi_hpet_enable_interrupt() argument
177 switch (timer_id) { in sedi_hpet_enable_interrupt()
195 void sedi_hpet_disable_interrupt(IN sedi_hpet_t timer_id) in sedi_hpet_disable_interrupt() argument
197 switch (timer_id) { in sedi_hpet_disable_interrupt()
267 void sedi_hpet_timer_int_handler(IN sedi_hpet_t timer_id) in sedi_hpet_timer_int_handler() argument
269 if (!(SEDI_REG_GET(HPET, GIS_LOW) & BIT(timer_id))) in sedi_hpet_timer_int_handler()
273 sedi_hpet_set_int_status(BIT(timer_id)); in sedi_hpet_timer_int_handler()
275 if (bsp_timers[timer_id].callback) { in sedi_hpet_timer_int_handler()
276 bsp_timers[timer_id].callback(bsp_timers[timer_id].param); in sedi_hpet_timer_int_handler()
279 if (bsp_timers[timer_id].one_shot) { in sedi_hpet_timer_int_handler()
280 sedi_hpet_kill_timer(timer_id); in sedi_hpet_timer_int_handler()
282 bsp_timers[timer_id].expires = in sedi_hpet_timer_int_handler()
283 sedi_hpet_get_main_counter() + bsp_timers[timer_id].timeout; in sedi_hpet_timer_int_handler()
285 sedi_hpet_set_comparator(timer_id, bsp_timers[timer_id].expires); in sedi_hpet_timer_int_handler()
289 int32_t sedi_hpet_config_timer(IN sedi_hpet_t timer_id, IN uint64_t microseconds, in sedi_hpet_config_timer() argument
292 DBG_CHECK(timer_id < SEDI_HPET_SOC_TIMER_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_hpet_config_timer()
295 DBG_CHECK(bsp_timers[timer_id].valid == 0, SEDI_DRIVER_ERROR_BUSY); in sedi_hpet_config_timer()
298 bsp_timers[timer_id].valid = 1; in sedi_hpet_config_timer()
299 bsp_timers[timer_id].start = 0; in sedi_hpet_config_timer()
300 bsp_timers[timer_id].one_shot = one_shot ? 1 : 0; in sedi_hpet_config_timer()
301 bsp_timers[timer_id].microsec = microseconds; in sedi_hpet_config_timer()
302 bsp_timers[timer_id].timeout = US_TO_HPET_CYCLE(microseconds + HPET_CYCLE_TO_US(1)); in sedi_hpet_config_timer()
303 bsp_timers[timer_id].expires = 0; in sedi_hpet_config_timer()
304 bsp_timers[timer_id].callback = callback; in sedi_hpet_config_timer()
305 bsp_timers[timer_id].param = (void *)param; in sedi_hpet_config_timer()
306 if (bsp_timers[timer_id].timeout < hpet_min_delay) { in sedi_hpet_config_timer()
307 bsp_timers[timer_id].timeout = hpet_min_delay; in sedi_hpet_config_timer()
313 int32_t sedi_hpet_kill_timer(IN sedi_hpet_t timer_id) in sedi_hpet_kill_timer() argument
315 DBG_CHECK(timer_id < SEDI_HPET_SOC_TIMER_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_hpet_kill_timer()
318 sedi_hpet_disable_interrupt(timer_id); in sedi_hpet_kill_timer()
319 sedi_hpet_set_int_status(BIT(timer_id)); in sedi_hpet_kill_timer()
322 sedi_hpet_update_comparator(timer_id, (uint64_t)-1); in sedi_hpet_kill_timer()
324 memset(&bsp_timers[timer_id], 0, sizeof(hpet_timer_ctx_t)); in sedi_hpet_kill_timer()
329 int32_t sedi_hpet_start_timer(IN sedi_hpet_t timer_id) in sedi_hpet_start_timer() argument
331 DBG_CHECK(timer_id < SEDI_HPET_SOC_TIMER_NUM, SEDI_DRIVER_ERROR_PARAMETER); in sedi_hpet_start_timer()
334 sedi_hpet_enable_interrupt(timer_id); in sedi_hpet_start_timer()
336 bsp_timers[timer_id].start = 1; in sedi_hpet_start_timer()
337 bsp_timers[timer_id].expires = sedi_hpet_get_main_counter() + bsp_timers[timer_id].timeout; in sedi_hpet_start_timer()
340 sedi_hpet_set_comparator(timer_id, bsp_timers[timer_id].expires); in sedi_hpet_start_timer()