1 /*
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2019 Western Digital Corporation or its affiliates.
5  *
6  * Authors:
7  *   Anup Patel <anup.patel@wdc.com>
8  */
9 
10 #ifndef __SBI_TIMER_H__
11 #define __SBI_TIMER_H__
12 
13 #include <sbi/sbi_types.h>
14 
15 struct sbi_scratch;
16 
17 /** Get timer value for current HART */
18 u64 sbi_timer_value(void);
19 
20 /** Get virtualized timer value for current HART */
21 u64 sbi_timer_virt_value(void);
22 
23 /** Get timer delta value for current HART */
24 u64 sbi_timer_get_delta(void);
25 
26 /** Set timer delta value for current HART */
27 void sbi_timer_set_delta(ulong delta);
28 
29 /** Set upper 32-bits of timer delta value for current HART */
30 void sbi_timer_set_delta_upper(ulong delta_upper);
31 
32 /** Start timer event for current HART */
33 void sbi_timer_event_start(u64 next_event);
34 
35 /** Process timer event for current HART */
36 void sbi_timer_process(void);
37 
38 /* Initialize timer */
39 int sbi_timer_init(struct sbi_scratch *scratch, bool cold_boot);
40 
41 /* Exit timer */
42 void sbi_timer_exit(struct sbi_scratch *scratch);
43 
44 #endif
45