]> git.donarmstrong.com Git - qmk_firmware.git/blob - tmk_core/common/arm_atsam/timer.c
Massdrop keyboard support (#3780)
[qmk_firmware.git] / tmk_core / common / arm_atsam / timer.c
1 #include "samd51j18a.h"
2 #include "timer.h"
3 #include "tmk_core/protocol/arm_atsam/clks.h"
4
5 void set_time(uint64_t tset)
6 {
7     ms_clk = tset;
8 }
9
10 void timer_init(void)
11 {
12     ms_clk = 0;
13 }
14
15 uint16_t timer_read(void)
16 {
17     return (uint16_t)ms_clk;
18 }
19
20 uint32_t timer_read32(void)
21 {
22     return (uint32_t)ms_clk;
23 }
24
25 uint64_t timer_read64(void)
26 {
27     return ms_clk;
28 }
29
30 uint16_t timer_elapsed(uint16_t tlast)
31 {
32     return TIMER_DIFF_16(timer_read(), tlast);
33 }
34
35 uint32_t timer_elapsed32(uint32_t tlast)
36 {
37     return TIMER_DIFF_32(timer_read32(), tlast);
38 }
39
40 uint32_t timer_elapsed64(uint32_t tlast)
41 {
42     uint64_t tnow = timer_read64();
43     return (tnow >= tlast ? tnow - tlast : UINT64_MAX - tlast + tnow);
44 }
45
46 void timer_clear(void)
47 {
48     ms_clk = 0;
49 }
50
51 void wait_ms(uint64_t msec)
52 {
53     CLK_delay_ms(msec);
54 }
55
56 void wait_us(uint16_t usec)
57 {
58     CLK_delay_us(usec);
59 }