timer_at91.h
Go to the documentation of this file.00001
00040 #ifndef DRV_AT91_TIMER_H
00041 #define DRV_AT91_TIMER_H
00042
00043 #include <hw/hw_cpufreq.h>
00044
00045 #include "cfg/cfg_timer.h"
00046 #include <cfg/compiler.h>
00047 #include <cfg/macros.h>
00048
00049 #include <io/arm.h>
00050
00058 #define TIMER_ON_PIT 1
00059
00060 #define TIMER_DEFAULT TIMER_ON_PIT
00061
00062
00063
00064
00065 #if (CONFIG_TIMER == TIMER_ON_PIT)
00066
00067
00068
00069
00070
00071 #define DEFINE_TIMER_ISR void timer_handler(void); \
00072 void timer_handler(void)
00073
00074 #define TIMER_TICKS_PER_SEC 1000
00075 #define TIMER_HW_CNT (CPU_FREQ / (16 * TIMER_TICKS_PER_SEC) - 1)
00076
00078 #define TIMER_HW_HPTICKS_PER_SEC (CPU_FREQ / 16)
00079
00081 typedef uint32_t hptime_t;
00082 #define SIZEOF_HPTIME_T 4
00083
00084 INLINE void timer_hw_irq(void)
00085 {
00086
00087 uint32_t dummy = PIVR;
00088 (void) dummy;
00089 }
00090
00091 INLINE bool timer_hw_triggered(void)
00092 {
00093 return PIT_SR & BV(PITS);
00094 }
00095
00096 INLINE hptime_t timer_hw_hpread(void)
00097 {
00098
00099 return PIIR & CPIV_MASK;
00100 }
00101
00102 #else
00103
00104 #error Unimplemented value for CONFIG_TIMER
00105 #endif
00106
00107 void timer_hw_init(void);
00108
00109
00110 #endif