1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <device/mmio.h> 4 #include <delay.h> 5 #include <soc/timer.h> 6 #include <stdint.h> 7 #include <timer.h> 8 timer_raw_value(void)9static uint64_t timer_raw_value(void) 10 { 11 uint64_t value0; 12 uint64_t value1; 13 14 value0 = (uint64_t)read32(&timer7_ptr->timer_curr_value0); 15 value1 = (uint64_t)read32(&timer7_ptr->timer_curr_value1); 16 value0 = value0 | value1<<32; 17 return value0; 18 } 19 timer_monotonic_get(struct mono_time * mt)20void timer_monotonic_get(struct mono_time *mt) 21 { 22 mono_time_set_usecs(mt, timer_raw_value() / clocks_per_usec); 23 } 24 init_timer(void)25void init_timer(void) 26 { 27 write32(&timer7_ptr->timer_load_count0, TIMER_LOAD_VAL); 28 write32(&timer7_ptr->timer_load_count1, TIMER_LOAD_VAL); 29 write32(&timer7_ptr->timer_ctrl_reg, 1); 30 } 31