diff options
Diffstat (limited to 'arch/arm/mach-bcmring/include/mach/csp/tmrHw.h')
-rw-r--r-- | arch/arm/mach-bcmring/include/mach/csp/tmrHw.h | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/arch/arm/mach-bcmring/include/mach/csp/tmrHw.h b/arch/arm/mach-bcmring/include/mach/csp/tmrHw.h new file mode 100644 index 000000000000..1cc882ae60f5 --- /dev/null +++ b/arch/arm/mach-bcmring/include/mach/csp/tmrHw.h | |||
@@ -0,0 +1,263 @@ | |||
1 | /***************************************************************************** | ||
2 | * Copyright 2004 - 2008 Broadcom Corporation. All rights reserved. | ||
3 | * | ||
4 | * Unless you and Broadcom execute a separate written software license | ||
5 | * agreement governing use of this software, this software is licensed to you | ||
6 | * under the terms of the GNU General Public License version 2, available at | ||
7 | * http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). | ||
8 | * | ||
9 | * Notwithstanding the above, under no circumstances may you combine this | ||
10 | * software in any way with any other Broadcom software provided under a | ||
11 | * license other than the GPL, without Broadcom's express prior written | ||
12 | * consent. | ||
13 | *****************************************************************************/ | ||
14 | |||
15 | /****************************************************************************/ | ||
16 | /** | ||
17 | * @file tmrHw.h | ||
18 | * | ||
19 | * @brief API definitions for low level Timer driver | ||
20 | * | ||
21 | */ | ||
22 | /****************************************************************************/ | ||
23 | #ifndef _TMRHW_H | ||
24 | #define _TMRHW_H | ||
25 | |||
26 | #include <linux/types.h> | ||
27 | |||
28 | typedef uint32_t tmrHw_ID_t; /* Timer ID */ | ||
29 | typedef uint32_t tmrHw_COUNT_t; /* Timer count */ | ||
30 | typedef uint32_t tmrHw_INTERVAL_t; /* Timer interval */ | ||
31 | typedef uint32_t tmrHw_RATE_t; /* Timer event (count/interrupt) rate */ | ||
32 | |||
33 | typedef enum { | ||
34 | tmrHw_INTERRUPT_STATUS_SET, /* Interrupted */ | ||
35 | tmrHw_INTERRUPT_STATUS_UNSET /* No Interrupt */ | ||
36 | } tmrHw_INTERRUPT_STATUS_e; | ||
37 | |||
38 | typedef enum { | ||
39 | tmrHw_CAPABILITY_CLOCK, /* Clock speed in HHz */ | ||
40 | tmrHw_CAPABILITY_RESOLUTION /* Timer resolution in bits */ | ||
41 | } tmrHw_CAPABILITY_e; | ||
42 | |||
43 | /****************************************************************************/ | ||
44 | /** | ||
45 | * @brief Get timer capability | ||
46 | * | ||
47 | * This function returns various capabilities/attributes of a timer | ||
48 | * | ||
49 | * @return Numeric capability | ||
50 | * | ||
51 | */ | ||
52 | /****************************************************************************/ | ||
53 | uint32_t tmrHw_getTimerCapability(tmrHw_ID_t timerId, /* [ IN ] Timer Id */ | ||
54 | tmrHw_CAPABILITY_e capability /* [ IN ] Timer capability */ | ||
55 | ); | ||
56 | |||
57 | /****************************************************************************/ | ||
58 | /** | ||
59 | * @brief Configures a periodic timer in terms of timer interrupt rate | ||
60 | * | ||
61 | * This function initializes a periodic timer to generate specific number of | ||
62 | * timer interrupt per second | ||
63 | * | ||
64 | * @return On success: Effective timer frequency | ||
65 | * On failure: 0 | ||
66 | * | ||
67 | */ | ||
68 | /****************************************************************************/ | ||
69 | tmrHw_RATE_t tmrHw_setPeriodicTimerRate(tmrHw_ID_t timerId, /* [ IN ] Timer Id */ | ||
70 | tmrHw_RATE_t rate /* [ IN ] Number of timer interrupt per second */ | ||
71 | ); | ||
72 | |||
73 | /****************************************************************************/ | ||
74 | /** | ||
75 | * @brief Configures a periodic timer to generate timer interrupt after | ||
76 | * certain time interval | ||
77 | * | ||
78 | * This function initializes a periodic timer to generate timer interrupt | ||
79 | * after every time interval in millisecond | ||
80 | * | ||
81 | * @return On success: Effective interval set in mili-second | ||
82 | * On failure: 0 | ||
83 | * | ||
84 | */ | ||
85 | /****************************************************************************/ | ||
86 | tmrHw_INTERVAL_t tmrHw_setPeriodicTimerInterval(tmrHw_ID_t timerId, /* [ IN ] Timer Id */ | ||
87 | tmrHw_INTERVAL_t msec /* [ IN ] Interval in mili-second */ | ||
88 | ); | ||
89 | |||
90 | /****************************************************************************/ | ||
91 | /** | ||
92 | * @brief Configures a periodic timer to generate timer interrupt just once | ||
93 | * after certain time interval | ||
94 | * | ||
95 | * This function initializes a periodic timer to generate a single ticks after | ||
96 | * certain time interval in millisecond | ||
97 | * | ||
98 | * @return On success: Effective interval set in mili-second | ||
99 | * On failure: 0 | ||
100 | * | ||
101 | */ | ||
102 | /****************************************************************************/ | ||
103 | tmrHw_INTERVAL_t tmrHw_setOneshotTimerInterval(tmrHw_ID_t timerId, /* [ IN ] Timer Id */ | ||
104 | tmrHw_INTERVAL_t msec /* [ IN ] Interval in mili-second */ | ||
105 | ); | ||
106 | |||
107 | /****************************************************************************/ | ||
108 | /** | ||
109 | * @brief Configures a timer to run as a free running timer | ||
110 | * | ||
111 | * This function initializes a timer to run as a free running timer | ||
112 | * | ||
113 | * @return Timer resolution (count / sec) | ||
114 | * | ||
115 | */ | ||
116 | /****************************************************************************/ | ||
117 | tmrHw_RATE_t tmrHw_setFreeRunningTimer(tmrHw_ID_t timerId, /* [ IN ] Timer Id */ | ||
118 | uint32_t divider /* [ IN ] Dividing the clock frequency */ | ||
119 | ) __attribute__ ((section(".aramtext"))); | ||
120 | |||
121 | /****************************************************************************/ | ||
122 | /** | ||
123 | * @brief Starts a timer | ||
124 | * | ||
125 | * This function starts a preconfigured timer | ||
126 | * | ||
127 | * @return -1 - On Failure | ||
128 | * 0 - On Success | ||
129 | */ | ||
130 | /****************************************************************************/ | ||
131 | int tmrHw_startTimer(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
132 | ) __attribute__ ((section(".aramtext"))); | ||
133 | |||
134 | /****************************************************************************/ | ||
135 | /** | ||
136 | * @brief Stops a timer | ||
137 | * | ||
138 | * This function stops a running timer | ||
139 | * | ||
140 | * @return -1 - On Failure | ||
141 | * 0 - On Success | ||
142 | */ | ||
143 | /****************************************************************************/ | ||
144 | int tmrHw_stopTimer(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
145 | ); | ||
146 | |||
147 | /****************************************************************************/ | ||
148 | /** | ||
149 | * @brief Gets current timer count | ||
150 | * | ||
151 | * This function returns the current timer value | ||
152 | * | ||
153 | * @return Current downcounting timer value | ||
154 | * | ||
155 | */ | ||
156 | /****************************************************************************/ | ||
157 | tmrHw_COUNT_t tmrHw_GetCurrentCount(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
158 | ) __attribute__ ((section(".aramtext"))); | ||
159 | |||
160 | /****************************************************************************/ | ||
161 | /** | ||
162 | * @brief Gets timer count rate | ||
163 | * | ||
164 | * This function returns the number of counts per second | ||
165 | * | ||
166 | * @return Count rate | ||
167 | * | ||
168 | */ | ||
169 | /****************************************************************************/ | ||
170 | tmrHw_RATE_t tmrHw_getCountRate(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
171 | ) __attribute__ ((section(".aramtext"))); | ||
172 | |||
173 | /****************************************************************************/ | ||
174 | /** | ||
175 | * @brief Enables timer interrupt | ||
176 | * | ||
177 | * This function enables the timer interrupt | ||
178 | * | ||
179 | * @return N/A | ||
180 | * | ||
181 | */ | ||
182 | /****************************************************************************/ | ||
183 | void tmrHw_enableInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
184 | ); | ||
185 | |||
186 | /****************************************************************************/ | ||
187 | /** | ||
188 | * @brief Disables timer interrupt | ||
189 | * | ||
190 | * This function disable the timer interrupt | ||
191 | * | ||
192 | * @return N/A | ||
193 | */ | ||
194 | /****************************************************************************/ | ||
195 | void tmrHw_disableInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
196 | ); | ||
197 | |||
198 | /****************************************************************************/ | ||
199 | /** | ||
200 | * @brief Clears the interrupt | ||
201 | * | ||
202 | * This function clears the timer interrupt | ||
203 | * | ||
204 | * @return N/A | ||
205 | * | ||
206 | * @note | ||
207 | * Must be called under the context of ISR | ||
208 | */ | ||
209 | /****************************************************************************/ | ||
210 | void tmrHw_clearInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
211 | ); | ||
212 | |||
213 | /****************************************************************************/ | ||
214 | /** | ||
215 | * @brief Gets the interrupt status | ||
216 | * | ||
217 | * This function returns timer interrupt status | ||
218 | * | ||
219 | * @return Interrupt status | ||
220 | */ | ||
221 | /****************************************************************************/ | ||
222 | tmrHw_INTERRUPT_STATUS_e tmrHw_getInterruptStatus(tmrHw_ID_t timerId /* [ IN ] Timer id */ | ||
223 | ); | ||
224 | |||
225 | /****************************************************************************/ | ||
226 | /** | ||
227 | * @brief Indentifies a timer causing interrupt | ||
228 | * | ||
229 | * This functions returns a timer causing interrupt | ||
230 | * | ||
231 | * @return 0xFFFFFFFF : No timer causing an interrupt | ||
232 | * ! 0xFFFFFFFF : timer causing an interrupt | ||
233 | * @note | ||
234 | * tmrHw_clearIntrrupt() must be called with a valid timer id after calling this function | ||
235 | */ | ||
236 | /****************************************************************************/ | ||
237 | tmrHw_ID_t tmrHw_getInterruptSource(void); | ||
238 | |||
239 | /****************************************************************************/ | ||
240 | /** | ||
241 | * @brief Displays specific timer registers | ||
242 | * | ||
243 | * | ||
244 | * @return void | ||
245 | * | ||
246 | */ | ||
247 | /****************************************************************************/ | ||
248 | void tmrHw_printDebugInfo(tmrHw_ID_t timerId, /* [ IN ] Timer id */ | ||
249 | int (*fpPrint) (const char *, ...) /* [ IN ] Print callback function */ | ||
250 | ); | ||
251 | |||
252 | /****************************************************************************/ | ||
253 | /** | ||
254 | * @brief Use a timer to perform a busy wait delay for a number of usecs. | ||
255 | * | ||
256 | * @return N/A | ||
257 | */ | ||
258 | /****************************************************************************/ | ||
259 | void tmrHw_udelay(tmrHw_ID_t timerId, /* [ IN ] Timer id */ | ||
260 | unsigned long usecs /* [ IN ] usec to delay */ | ||
261 | ) __attribute__ ((section(".aramtext"))); | ||
262 | |||
263 | #endif /* _TMRHW_H */ | ||