1 /*
2 * Copyright (c) 2024 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #ifndef _PICO_TIME_ADAPTER_H
8 #define _PICO_TIME_ADAPTER_H
9
10 #ifndef TA_NUM_TIMERS
11 #define TA_NUM_TIMERS 1
12 #endif
13
14 #ifndef TA_NUM_TIMER_ALARMS
15 #define TA_NUM_TIMER_ALARMS 4
16 #endif
17
18 void ta_clear_force_irq(alarm_pool_timer_t *timer, uint hardware_alarm_num);
19 void ta_clear_irq(alarm_pool_timer_t *timer, uint hardware_alarm_num);
20 void ta_force_irq(alarm_pool_timer_t *timer, uint hardware_alarm_num);
21 void ta_set_timeout(alarm_pool_timer_t *timer, uint hardware_alarm_num, int64_t target);
22 bool ta_wakes_up_on_or_before(alarm_pool_timer_t *timer, uint alarm_num, int64_t target);
23 void ta_enable_irq_handler(alarm_pool_timer_t *timer, uint hardware_alarm_num, void (*irq_handler)(void));
24 void ta_disable_irq_handler(alarm_pool_timer_t *timer, uint hardware_alarm_num, void (*irq_handler)(void));
25 void ta_hardware_alarm_claim(alarm_pool_timer_t *timer, uint hardware_alarm_num);
26 int ta_hardware_alarm_claim_unused(alarm_pool_timer_t *timer, bool required);
27 alarm_pool_timer_t *ta_from_current_irq(uint *alarm_num);
28 uint ta_timer_num(alarm_pool_timer_t *timer);
ta_time_us_64(__unused alarm_pool_timer_t * timer)29 static inline uint64_t ta_time_us_64(__unused alarm_pool_timer_t *timer) {
30 return time_us_64();
31 }
32 alarm_pool_timer_t *ta_timer_instance(uint instance_num);
33 alarm_pool_timer_t *ta_default_timer_instance(void);
34
35 #endif
36