1 /** @file sys_vim.h
2 *   @brief Vectored Interrupt Module Header File
3 *   @date 29.May.2013
4 *   @version 03.05.02
5 *
6 *   This file contains:
7 *   - VIM Type Definitions
8 *   - VIM General Definitions
9 *   .
10 *   which are relevant for Vectored Interrupt Controller.
11 */
12 
13 /* (c) Texas Instruments 2009-2013, All rights reserved. */
14 
15 #ifndef __SYS_VIM_H__
16 #define __SYS_VIM_H__
17 
18 #include "reg_vim.h"
19 
20 /* USER CODE BEGIN (0) */
21 /* USER CODE END */
22 
23 
24 /* VIM Type Definitions */
25 
26 /** @typedef t_isrFuncPTR
27 *   @brief ISR Function Pointer Type Definition
28 *
29 *   This type is used to access the ISR handler.
30 */
31 typedef void (*t_isrFuncPTR)(void);
32 
33 /* USER CODE BEGIN (1) */
34 /* USER CODE END */
35 
36 
37 /* VIM General Configuration */
38 
39 #define VIM_CHANNELS 96U
40 
41 /* USER CODE BEGIN (2) */
42 /* USER CODE END */
43 
44 /* Interrupt Handlers */
45 
46 extern void esmHighInterrupt(void);
47 extern void phantomInterrupt(void);
48 extern void rtiCompare3Interrupt(void);
49 extern void linHighLevelInterrupt(void);
50 
51 /* USER CODE BEGIN (3) */
52 /* USER CODE END */
53 
54 #define VIM_PARFLG		(*(volatile uint32 *)0xFFFFFDECU)
55 #define VIM_PARCTL		(*(volatile uint32 *)0xFFFFFDF0U)
56 #define VIM_ADDERR		(*(volatile uint32 *)0xFFFFFDF4U)
57 #define VIM_FBPARERR	(*(volatile uint32 *)0xFFFFFDF8U)
58 
59 #define VIMRAMPARLOC	(*(volatile uint32 *)0xFFF82400U)
60 #define VIMRAMLOC		(*(volatile uint32 *)0xFFF82000U)
61 
62 /* Configuration registers */
63 typedef struct vim_config_reg
64 {
65     uint32 CONFIG_FIRQPR0;
66     uint32 CONFIG_FIRQPR1;
67     uint32 CONFIG_FIRQPR2;
68     uint32 CONFIG_FIRQPR3;
69     uint32 CONFIG_REQMASKSET0;
70     uint32 CONFIG_REQMASKSET1;
71     uint32 CONFIG_REQMASKSET2;
72     uint32 CONFIG_REQMASKSET3;
73     uint32 CONFIG_WAKEMASKSET0;
74     uint32 CONFIG_WAKEMASKSET1;
75     uint32 CONFIG_WAKEMASKSET2;
76     uint32 CONFIG_WAKEMASKSET3;
77     uint32 CONFIG_CAPEVT;
78     uint32 CONFIG_CHANCTRL[24U];
79 } vim_config_reg_t;
80 
81 /* Configuration registers initial value */
82 #define VIM_FIRQPR0_CONFIGVALUE	SYS_FIQ\
83                     | (SYS_FIQ <<  1U)\
84                     | (SYS_IRQ <<  2U)\
85                     | (SYS_IRQ <<  3U)\
86                     | (SYS_IRQ <<  4U)\
87                     | (SYS_IRQ <<  5U)\
88                     | (SYS_IRQ <<  6U)\
89                     | (SYS_IRQ <<  7U)\
90                     | (SYS_IRQ <<  8U)\
91                     | (SYS_IRQ <<  9U)\
92                     | (SYS_IRQ << 10U)\
93                     | (SYS_IRQ << 11U)\
94                     | (SYS_IRQ << 12U)\
95                     | (SYS_IRQ << 13U)\
96                     | (SYS_IRQ << 14U)\
97                     | (SYS_IRQ << 15U)\
98                     | (SYS_IRQ << 16U)\
99                     | (SYS_IRQ << 17U)\
100                     | (SYS_IRQ << 18U)\
101                     | (SYS_IRQ << 19U)\
102                     | (SYS_IRQ << 20U)\
103                     | (SYS_IRQ << 21U)\
104                     | (SYS_IRQ << 22U)\
105                     | (SYS_IRQ << 23U)\
106                     | (SYS_IRQ << 24U)\
107                     | (SYS_IRQ << 25U)\
108                     | (SYS_IRQ << 26U)\
109                     | (SYS_IRQ << 27U)\
110                     | (SYS_IRQ << 28U)\
111                     | (SYS_IRQ << 29U)\
112                     | (SYS_IRQ << 30U)\
113                     | (SYS_IRQ << 31U)
114 
115 #define VIM_FIRQPR1_CONFIGVALUE	SYS_IRQ\
116                     | (SYS_IRQ <<  1U)\
117                     | (SYS_IRQ <<  2U)\
118                     | (SYS_IRQ <<  3U)\
119                     | (SYS_IRQ <<  4U)\
120                     | (SYS_IRQ <<  5U)\
121                     | (SYS_IRQ <<  6U)\
122                     | (SYS_IRQ <<  7U)\
123                     | (SYS_IRQ <<  8U)\
124                     | (SYS_IRQ <<  9U)\
125                     | (SYS_IRQ << 10U)\
126                     | (SYS_IRQ << 11U)\
127                     | (SYS_IRQ << 12U)\
128                     | (SYS_IRQ << 13U)\
129                     | (SYS_IRQ << 14U)\
130                     | (SYS_IRQ << 15U)\
131                     | (SYS_IRQ << 16U)\
132                     | (SYS_IRQ << 17U)\
133                     | (SYS_IRQ << 18U)\
134                     | (SYS_IRQ << 19U)\
135                     | (SYS_IRQ << 20U)\
136                     | (SYS_IRQ << 21U)\
137                     | (SYS_IRQ << 22U)\
138                     | (SYS_IRQ << 23U)\
139                     | (SYS_IRQ << 24U)\
140                     | (SYS_IRQ << 25U)\
141                     | (SYS_IRQ << 26U)\
142                     | (SYS_IRQ << 27U)\
143                     | (SYS_IRQ << 28U)\
144                     | (SYS_IRQ << 29U)\
145                     | (SYS_IRQ << 30U)\
146                     | (SYS_IRQ << 31U)
147 
148 #define VIM_FIRQPR2_CONFIGVALUE	SYS_IRQ\
149                     | (SYS_IRQ << 1U)\
150                     | (SYS_IRQ << 2U)\
151                     | (SYS_IRQ << 3U)\
152                     | (SYS_IRQ << 4U)\
153                     | (SYS_IRQ << 5U)\
154                     | (SYS_IRQ << 6U)\
155                     | (SYS_IRQ << 7U)\
156                     | (SYS_IRQ << 8U)\
157                     | (SYS_IRQ << 9U)\
158                     | (SYS_IRQ << 10U)\
159                     | (SYS_IRQ << 11U)\
160                     | (SYS_IRQ << 12U)\
161                     | (SYS_IRQ << 13U)\
162                     | (SYS_IRQ << 14U)\
163                     | (SYS_IRQ << 15U)\
164                     | (SYS_IRQ << 16U)\
165                     | (SYS_IRQ << 17U)\
166                     | (SYS_IRQ << 18U)\
167                     | (SYS_IRQ << 19U)\
168                     | (SYS_IRQ << 20U)\
169                     | (SYS_IRQ << 21U)\
170                     | (SYS_IRQ << 22U)\
171                     | (SYS_IRQ << 23U)\
172                     | (SYS_IRQ << 24U)\
173                     | (SYS_IRQ << 25U)\
174 					| (SYS_IRQ << 26U)\
175                     | (SYS_IRQ << 27U)\
176                     | (SYS_IRQ << 28U)\
177                     | (SYS_IRQ << 29U)\
178                     | (SYS_IRQ << 30U)\
179                     | (SYS_IRQ << 31U)
180 
181 #define VIM_FIRQPR3_CONFIGVALUE	SYS_IRQ\
182                     | (SYS_IRQ << 1U)\
183                     | (SYS_IRQ << 2U)\
184                     | (SYS_IRQ << 3U)\
185                     | (SYS_IRQ << 4U)\
186                     | (SYS_IRQ << 5U)\
187                     | (SYS_IRQ << 6U)\
188                     | (SYS_IRQ << 7U)\
189                     | (SYS_IRQ << 8U)\
190                     | (SYS_IRQ << 9U)\
191                     | (SYS_IRQ << 10U)\
192                     | (SYS_IRQ << 11U)\
193                     | (SYS_IRQ << 12U)\
194                     | (SYS_IRQ << 13U)\
195                     | (SYS_IRQ << 14U)\
196                     | (SYS_IRQ << 15U)\
197                     | (SYS_IRQ << 16U)\
198                     | (SYS_IRQ << 17U)\
199                     | (SYS_IRQ << 18U)\
200                     | (SYS_IRQ << 19U)\
201                     | (SYS_IRQ << 20U)\
202                     | (SYS_IRQ << 21U)\
203                     | (SYS_IRQ << 22U)\
204                     | (SYS_IRQ << 23U)\
205                     | (SYS_IRQ << 24U)\
206                     | (SYS_IRQ << 25U)\
207 					| (SYS_IRQ << 26U)\
208                     | (SYS_IRQ << 27U)\
209                     | (SYS_IRQ << 28U)\
210                     | (SYS_IRQ << 29U)\
211                     | (SYS_IRQ << 30U)\
212                     | (SYS_IRQ << 31U)
213 
214 #define VIM_REQMASKSET0_CONFIGVALUE	1U\
215                         | (1U << 1U)\
216                         | (0U << 2U)\
217                         | (0U << 3U)\
218                         | (0U << 4U)\
219                         | (1U << 5U)\
220                         | (0U << 6U)\
221                         | (0U << 7U)\
222                         | (0U << 8U)\
223                         | (0U << 9U)\
224                         | (0U << 10U)\
225                         | (0U << 11U)\
226                         | (0U << 12U)\
227                         | (1U << 13U)\
228                         | (0U << 14U)\
229                         | (0U << 15U)\
230                         | (0U << 16U)\
231                         | (0U << 17U)\
232                         | (0U << 18U)\
233                         | (0U << 19U)\
234                         | (0U << 20U)\
235                         | (0U << 21U)\
236                         | (0U << 22U)\
237                         | (0U << 23U)\
238                         | (0U << 24U)\
239                         | (0U << 25U)\
240                         | (0U << 26U)\
241                         | (0U << 27U)\
242                         | (0U << 28U)\
243                         | (0U << 29U)\
244                         | (0U << 30U)\
245                         | (0U << 31U)
246 
247 #define VIM_REQMASKSET1_CONFIGVALUE	0U\
248                         | (0U << 1U)\
249                         | (0U << 2U)\
250                         | (0U << 3U)\
251                         | (0U << 4U)\
252                         | (0U << 5U)\
253                         | (0U << 6U)\
254                         | (0U << 7U)\
255                         | (0U << 8U)\
256                         | (0U << 9U)\
257                         | (0U << 10U)\
258                         | (0U << 11U)\
259                         | (0U << 12U)\
260                         | (0U << 13U)\
261                         | (0U << 14U)\
262                         | (0U << 15U)\
263                         | (0U << 16U)\
264                         | (0U << 17U)\
265                         | (0U << 18U)\
266                         | (0U << 19U)\
267                         | (0U << 20U)\
268                         | (0U << 21U)\
269                         | (0U << 22U)\
270                         | (0U << 23U)\
271                         | (0U << 24U)\
272                         | (0U << 25U)\
273                         | (0U << 26U)\
274                         | (0U << 27U)\
275                         | (0U << 28U)\
276                         | (0U << 29U)\
277                         | (0U << 30U)\
278                         | (0U << 31U)
279 
280 #define VIM_REQMASKSET2_CONFIGVALUE	0U\
281                         | (0U << 1U)\
282                         | (0U << 2U)\
283                         | (0U << 3U)\
284                         | (0U << 4U)\
285                         | (0U << 5U)\
286                         | (0U << 6U)\
287                         | (0U << 7U)\
288                         | (0U << 8U)\
289                         | (0U << 9U)\
290                         | (0U << 10U)\
291                         | (0U << 11U)\
292                         | (0U << 12U)\
293                         | (0U << 13U)\
294                         | (0U << 14U)\
295                         | (0U << 15U)\
296                         | (0U << 16U)\
297                         | (0U << 17U)\
298                         | (0U << 18U)\
299                         | (0U << 19U)\
300                         | (0U << 20U)\
301                         | (0U << 21U)\
302                         | (0U << 22U)\
303                         | (0U << 23U)\
304                         | (0U << 24U)\
305                         | (0U << 25U)\
306 					    | (0U << 26U)\
307                         | (0U << 27U)\
308                         | (0U << 28U)\
309                         | (0U << 29U)\
310                         | (0U << 30U)\
311                         | (0U << 31U)
312 
313 #define VIM_REQMASKSET3_CONFIGVALUE	0U\
314                         | (0U << 1U)\
315                         | (0U << 2U)\
316                         | (0U << 3U)\
317                         | (0U << 4U)\
318                         | (0U << 5U)\
319                         | (0U << 6U)\
320                         | (0U << 7U)\
321                         | (0U << 8U)\
322                         | (0U << 9U)\
323                         | (0U << 10U)\
324                         | (0U << 11U)\
325                         | (0U << 12U)\
326                         | (0U << 13U)\
327                         | (0U << 14U)\
328                         | (0U << 15U)\
329                         | (0U << 16U)\
330                         | (0U << 17U)\
331                         | (0U << 18U)\
332                         | (0U << 19U)\
333                         | (0U << 20U)\
334                         | (0U << 21U)\
335                         | (0U << 22U)\
336                         | (0U << 23U)\
337                         | (0U << 24U)\
338                         | (0U << 25U)\
339 						| (0U << 26U)\
340                         | (0U << 27U)\
341                         | (0U << 28U)\
342                         | (0U << 29U)\
343                         | (0U << 30U)\
344                         | (0U << 31U)
345 
346 #define VIM_WAKEMASKSET0_CONFIGVALUE	0xFFFFFFFFU
347 #define VIM_WAKEMASKSET1_CONFIGVALUE	0xFFFFFFFFU
348 #define VIM_WAKEMASKSET2_CONFIGVALUE	0xFFFFFFFFU
349 #define VIM_WAKEMASKSET3_CONFIGVALUE	0U
350 #define VIM_CAPEVT_CONFIGVALUE	    	0U
351 
352 #define VIM_CHANCTRL_CONFIGVALUE	{0x00010203U,\
353 	0x04050607U,\
354 	0x08090A0BU,\
355 	0x0C0D0E0FU,\
356 	0x10111213U,\
357 	0x14151617U,\
358 	0x18191A1BU,\
359 	0x1C1D1E1FU,\
360 	0x20212223U,\
361 	0x24252627U,\
362 	0x28292A2BU,\
363 	0x2C2D2E2FU,\
364 	0x30313233U,\
365 	0x34353637U,\
366 	0x38393A3BU,\
367 	0x3C3D3E3FU,\
368 	0x40414243U,\
369 	0x44454647U,\
370 	0x48494A4BU,\
371 	0x4C4D4E4FU,\
372 	0x50515253U,\
373 	0x54555657U,\
374 	0x58595A5BU,\
375 	0x5C5D5E5FU}
376 
377 /**
378  * @defgroup VIM VIM
379  * @brief Vectored Interrupt Manager
380  *
381  * The vectored interrupt manager (VIM) provides hardware assistance for prioritizing and controlling the
382  * many interrupt sources present on a device. Interrupts are caused by events outside of the normal flow of
383  * program execution.
384  *
385  * Related files:
386  * - reg_vim.h
387  * - sys_vim.h
388  * - sys_vim.c
389  *
390  * @addtogroup VIM
391  * @{
392  */
393 /*VIM Interface functions*/
394 void vimInit(void);
395 void vimChannelMap(uint32 request, uint32 channel, t_isrFuncPTR handler);
396 void vimEnableInterrupt(uint32 channel, boolean inttype);
397 void vimDisableInterrupt(uint32 channel);
398 void vimGetConfigValue(vim_config_reg_t *config_reg, config_value_type_t type);
399 /*@}*/
400 #endif
401