RTEMS  5.1
gt_timer.h
1 #ifndef BSP_GT_TIMER_H
2 #define BSP_GT_TIMER_H
3 
4 /* Support for hardware timers in the discovery bridge */
5 
6 /*
7  * Authorship
8  * ----------
9  * This software ('beatnik' RTEMS BSP for MVME6100 and MVME5500) was
10  * created by Till Straumann <strauman@slac.stanford.edu>, 2005-2007,
11  * Stanford Linear Accelerator Center, Stanford University.
12  *
13  * Acknowledgement of sponsorship
14  * ------------------------------
15  * The 'beatnik' BSP was produced by
16  * the Stanford Linear Accelerator Center, Stanford University,
17  * under Contract DE-AC03-76SFO0515 with the Department of Energy.
18  *
19  * Government disclaimer of liability
20  * ----------------------------------
21  * Neither the United States nor the United States Department of Energy,
22  * nor any of their employees, makes any warranty, express or implied, or
23  * assumes any legal liability or responsibility for the accuracy,
24  * completeness, or usefulness of any data, apparatus, product, or process
25  * disclosed, or represents that its use would not infringe privately owned
26  * rights.
27  *
28  * Stanford disclaimer of liability
29  * --------------------------------
30  * Stanford University makes no representations or warranties, express or
31  * implied, nor assumes any liability for the use of this software.
32  *
33  * Stanford disclaimer of copyright
34  * --------------------------------
35  * Stanford University, owner of the copyright, hereby disclaims its
36  * copyright and all other rights in this software. Hence, anyone may
37  * freely use it for any purpose without restriction.
38  *
39  * Maintenance of notices
40  * ----------------------
41  * In the interest of clarity regarding the origin and status of this
42  * SLAC software, this and all the preceding Stanford University notices
43  * are to remain affixed to any copy or derivative of this software made
44  * or distributed by the recipient and are to be affixed to any copy of
45  * software made or distributed by the recipient that contains a copy or
46  * derivative of this software.
47  *
48  * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
49  */
50 
51 #include <stdint.h>
52 
53 #ifdef __cplusplus
54  extern "C" {
55 #endif
56 
57 /* Obtain the number of hardware timers present
58  * The 'timer' argument in the routines below addresses
59  * one of 0..(BSP_timer_instances()-1)
60  */
61 int BSP_timer_instances(void);
62 
63 /* Setup timer but don't start yet; interrupts are enabled if an isr argument is passed
64  * no interrupts are generated otherwise.
65  *
66  * If 'reload' is nonzero then the period is automatically restarted.
67  *
68  * RETURNS: 0 on success, nonzero on error (argument error)
69  *
70  * NOTE: If an ISR is already connected, it must be removed by passing a NULL isr first.
71  */
72 int BSP_timer_setup(uint32_t timer, void (*isr)(void *arg), void *arg, int reload);
73 
74 /* Stop timer;
75  *
76  * RETURNS: 0 on success, nonzero on argument error
77  */
78 int BSP_timer_stop(uint32_t timer);
79 
80 /* Start timer with 'period' (in ticks)
81  *
82  * RETURNS: 0 on success, nonzero on argument error
83  */
84 int BSP_timer_start(uint32_t timer, uint32_t period);
85 
86 /* read decrementing timer on the fly
87  *
88  * RETURNS: current count in ticks
89  */
90 uint32_t BSP_timer_read(uint32_t timer);
91 
92 /* get clock rate in Hz */
93 uint32_t BSP_timer_clock_get(uint32_t timer);
94 
95 /* Initialize timer facility -- to be used by BSP implementors only
96  *
97  * RETURNS: 0 on success, nonzero if ISR wrapper couldn't be installed
98  */
99 int BSP_timers_initialize(void);
100 
101 /* WATCHDOG TIMER (resets board if enabled and not 'petted' for
102  * some time).
103  */
104 
105 /* Enable watchdog and set a timeout (in us)
106  * RETURNS 0 on success
107  */
108 int BSP_watchdog_enable(uint32_t timeout_us);
109 
110 /* Disable watchdog
111  * RETURNS 0 on success
112  */
113 int BSP_watchdog_disable(void);
114 
115 /* Check status -- unfortunately there seems to be no way
116  * to read the running value...
117  *
118  * RETURNS nonzero if enabled/running, zero if disabled/stopped
119  */
120 int BSP_watchdog_status(void);
121 
122 /* Pet the watchdog (rearm to configured timeout)
123  * RETURNS: 0 on success, nonzero on failure (watchdog
124  * currently not running).
125  */
126 int BSP_watchdog_pet(void);
127 
128 
129 #ifdef __cplusplus
130  }
131 #endif
132 
133 #endif