193bcbb09SJames Raphael Tiovalen /* SPDX-License-Identifier: GPL-2.0-only */ 293bcbb09SJames Raphael Tiovalen #ifndef _ASMRISCV_TIMER_H_ 393bcbb09SJames Raphael Tiovalen #define _ASMRISCV_TIMER_H_ 493bcbb09SJames Raphael Tiovalen 593bcbb09SJames Raphael Tiovalen #include <asm/csr.h> 693bcbb09SJames Raphael Tiovalen 793bcbb09SJames Raphael Tiovalen extern void timer_get_frequency(void); 8*ff2fceb1SAndrew Jones extern void timer_start(unsigned long duration_us); 9*ff2fceb1SAndrew Jones extern void timer_stop(void); 1093bcbb09SJames Raphael Tiovalen timer_get_cycles(void)1193bcbb09SJames Raphael Tiovalenstatic inline uint64_t timer_get_cycles(void) 1293bcbb09SJames Raphael Tiovalen { 1393bcbb09SJames Raphael Tiovalen return csr_read(CSR_TIME); 1493bcbb09SJames Raphael Tiovalen } 1593bcbb09SJames Raphael Tiovalen timer_irq_enable(void)1614fa12b1SJames Raphael Tiovalenstatic inline void timer_irq_enable(void) 1714fa12b1SJames Raphael Tiovalen { 1814fa12b1SJames Raphael Tiovalen csr_set(CSR_SIE, IE_TIE); 1914fa12b1SJames Raphael Tiovalen } 2014fa12b1SJames Raphael Tiovalen timer_irq_disable(void)2114fa12b1SJames Raphael Tiovalenstatic inline void timer_irq_disable(void) 2214fa12b1SJames Raphael Tiovalen { 2314fa12b1SJames Raphael Tiovalen csr_clear(CSR_SIE, IE_TIE); 2414fa12b1SJames Raphael Tiovalen } 2514fa12b1SJames Raphael Tiovalen 2693bcbb09SJames Raphael Tiovalen #endif /* _ASMRISCV_TIMER_H_ */ 27