1  #ifndef __ARM_TIME_H__
2  #define __ARM_TIME_H__
3  
4  #include <asm/sysregs.h>
5  #include <asm/system.h>
6  
7  #define DT_MATCH_TIMER                      \
8      DT_MATCH_COMPATIBLE("arm,armv7-timer"), \
9      DT_MATCH_COMPATIBLE("arm,armv8-timer")
10  
11  typedef uint64_t cycles_t;
12  
get_cycles(void)13  static inline cycles_t get_cycles (void)
14  {
15          isb();
16          return READ_SYSREG64(CNTPCT_EL0);
17  }
18  
19  /* List of timer's IRQ */
20  enum timer_ppi
21  {
22      TIMER_PHYS_SECURE_PPI = 0,
23      TIMER_PHYS_NONSECURE_PPI = 1,
24      TIMER_VIRT_PPI = 2,
25      TIMER_HYP_PPI = 3,
26      MAX_TIMER_PPI = 4,
27  };
28  
29  /*
30   * Value of "clock-frequency" in the DT timer node if present.
31   * 0 means the property doesn't exist.
32   */
33  extern uint32_t timer_dt_clock_frequency;
34  
35  /* Get one of the timer IRQ number */
36  unsigned int timer_get_irq(enum timer_ppi ppi);
37  
38  /* Set up the timer interrupt on this CPU */
39  extern void init_timer_interrupt(void);
40  
41  /* Counter value at boot time */
42  extern uint64_t boot_count;
43  
44  extern s_time_t ticks_to_ns(uint64_t ticks);
45  extern uint64_t ns_to_ticks(s_time_t ns);
46  
47  void preinit_xen_time(void);
48  
49  #endif /* __ARM_TIME_H__ */
50  /*
51   * Local variables:
52   * mode: C
53   * c-file-style: "BSD"
54   * c-basic-offset: 4
55   * indent-tabs-mode: nil
56   * End:
57   */
58