comparison src/cs/drivers/drv_core/inth/niq32.c @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children 9029c222c426
comparison
equal deleted inserted replaced
-1:000000000000 0:b6a5e36de839
1 /******************************************************************************
2 TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
3
4 Property of Texas Instruments -- For Unrestricted Internal Use Only
5 Unauthorized reproduction and/or distribution is strictly prohibited. This
6 product is protected under copyright law and trade secret law as an
7 unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All
8 rights reserved.
9
10
11 Filename : niq32.c
12
13 Description : Nucleus IQ initializations
14
15 Project : Drivers
16
17 Author : proussel@ti.com Patrick Roussel.
18
19 Version number : 1.25
20
21 Date : 08/22/03
22
23 Previous delta : 12/19/00 14:24:51
24
25 *******************************************************************************/
26
27 #include "l1sw.cfg"
28
29 #include "chipset.cfg"
30 #include "board.cfg"
31 #include "rf.cfg"
32 #include "swconfig.cfg"
33
34 #if(OP_L1_STANDALONE == 0)
35 #include "debug.cfg"
36 #include "rv/rv_defined_swe.h"
37 #include "rtc/board/rtc_config.h"
38 #else
39 #include "l1_macro.h"
40 #include "l1_confg.h"
41 #endif
42
43 #if(OP_L1_STANDALONE == 0)
44 #include "swconfig.cfg"
45 #ifdef BLUETOOTH_INCLUDED
46 #include "btemobile.cfg"
47 #ifdef BT_CLK_REQ_INT
48 #include "board/bth_drv.h"
49 #endif
50 #endif
51 #endif
52
53
54 #if(L1_DYN_DSP_DWNLD == 1)
55 #include "l1_api_hisr.h"
56 #endif
57
58 #if (OP_L1_STANDALONE == 0)
59 #include "main/sys_types.h"
60 #else
61 #include "sys_types.h"
62 #endif
63
64 #if (CHIPSET == 12)
65 #include "sys_inth.h"
66 #else
67 #include "inth/inth.h"
68 #include "memif/mem.h"
69 #if (OP_L1_STANDALONE == 1)
70 #include "serialswitch_core.h"
71 #else
72 #include "uart/serialswitch.h"
73 #endif
74
75 #if (OP_L1_STANDALONE == 0)
76 #include "sim/sim.h"
77 #endif
78 #endif
79
80 #include "abb/abb_core_inth.h" // for External Interrupt
81 #define IQ_H
82 #include "inth/iq.h"
83 #include "ulpd/ulpd.h"
84 #if (BOARD == 34)
85 #include "csmi/csmi.h"
86 #endif
87
88 #if (defined RVM_DAR_SWE) && (defined _GSM)
89 extern void dar_watchdog_reset(void);
90 #endif
91
92 #if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (BOARD == 42) || (BOARD == 43) || (BOARD == 45))
93 #include "armio/armio.h"
94 #if (OP_L1_STANDALONE == 0)
95 #include "uart/uartfax.h"
96 #endif
97 #endif
98
99 /* External declaration */
100 extern void GAUGING_Handler(void);
101 extern void TMT_Timer_Interrupt(void);
102 #if (OP_L1_STANDALONE == 1)
103 extern void TM_Timer1Handler(void);
104 #endif
105 extern void kpd_key_handler(void);
106 extern void TP_FrameIntHandler(void);
107
108 #if (OP_L1_STANDALONE == 0)
109 #if (defined RVM_MPM_SWE)
110 extern void MPM_InterruptHandler(void);
111 #endif
112
113 #if (TI_PROFILER == 1)
114 extern void ti_profiler_tdma_action(void);
115 #endif
116
117 #if(RF_FAM==35)
118 extern void TSP_RxHandler(void);
119 #endif
120
121 extern void RTC_GaugingHandler(void);
122 extern void RTC_ItTimerHandle(void);
123 extern void RTC_ItAlarmHandle(void);
124 #endif
125
126
127
128 /* Global variables */
129 unsigned IQ_TimerCount1; /* Used to check if timer is incrementing */
130 unsigned IQ_TimerCount2; /* Used to check if timer is incrementing */
131 unsigned IQ_TimerCount; /* Used to check if timer is incrementing */
132 unsigned IQ_DummyCount; /* Used to check if dummy IT */
133 unsigned IQ_FrameCount; /* Used to check if Frame IT TPU*/
134 unsigned IQ_GsmTimerCount; /* Used to check if GSM Timer IT */
135
136
137 #if (CHIPSET != 12)
138 /*--------------------------------------------------------------*/
139 /* irqHandlers */
140 /*--------------------------------------------------------------*/
141 /* Parameters :none */
142 /* Return : none */
143 /* Functionality : Table of interrupt handlers */
144 /* These MUST be 32-bit entries */
145 /*--------------------------------------------------------------*/
146
147 SYS_FUNC irqHandlers[IQ_NUM_INT] =
148 {
149 IQ_TimerHandler, /* Watchdog timer */
150 IQ_TimerHandler1, /* timer 1 */
151 IQ_TimerHandler2, /* timer 2 */
152 IQ_Dummy, /* AIRQ 3 */
153 IQ_FrameHandler, /* TPU Frame It AIRQ 4 */
154 IQ_Dummy, /* AIRQ 5 */
155 #if (OP_L1_STANDALONE == 0)
156 SIM_IntHandler, /* AIRQ 6 */
157 #else
158 IQ_Dummy, /* AIRQ 6 */
159 #endif
160 #if ((CHIPSET == 2) || (CHIPSET == 3))
161 SER_uart_handler, /* AIRQ 7 */
162 #elif ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
163 SER_uart_modem_handler, /* AIRQ 7 */
164 #endif
165 #if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
166 // CC test 0316
167 IQ_KeypadGPIOHandler, /* AIRQ 8 */
168 // end
169 #else
170 IQ_KeypadHandler, /* AIRQ 8 */
171 #endif
172 IQ_Rtc_Handler, /* AIRQ 9 RTC Timer*/
173 #if ((CHIPSET == 2) || (CHIPSET == 3))
174 IQ_RtcA_GsmTim_Handler, /* AIRQ 10 RTC ALARM OR ULPD GSM TIMER*/
175 #elif ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
176 IQ_RtcA_Handler, /* AIRQ 10 RTC ALARM */
177 #endif
178 IQ_Gauging_Handler, /* AIRQ 11 ULPD GAUGING */
179 IQ_External, /* AIRQ 12 */
180 IQ_Dummy, /* AIRQ 13 */
181 IQ_Dummy, /* DMA interrupt */
182 #if (CHIPSET == 4)
183 IQ_Dummy, /* LEAD */
184 IQ_Dummy, /* SIM card-detect fast interrupt */
185 IQ_Dummy, /* External fast interrupt */
186 SER_uart_irda_handler, /* UART IrDA interrupt */
187 IQ_GsmTim_Handler /* ULPD GSM timer */
188 #elif ((CHIPSET == 5) || (CHIPSET == 6))
189 IQ_Dummy, /* LEAD */
190 IQ_Dummy, /* SIM card-detect fast interrupt */
191 IQ_Dummy, /* External fast interrupt */
192 SER_uart_irda_handler, /* UART IrDA interrupt */
193 IQ_GsmTim_Handler, /* ULPD GSM timer */
194 #if (BOARD == 34)
195 IQ_IcrHandler32,
196 #else
197 IQ_Dummy, /* Not mapped interrupt */
198 #endif
199 IQ_Dummy, /* Not mapped interrupt */
200 IQ_Dummy, /* Not mapped interrupt */
201 IQ_Dummy, /* Not mapped interrupt */
202 IQ_Dummy /* GEA interrupt */
203 #elif ((CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11))
204 #if (L1_DYN_DSP_DWNLD == 1)
205 IQ_ApiHandler, /* LEAD */
206 #else
207 IQ_Dummy, /* LEAD */
208 #endif
209 IQ_Dummy, /* SIM card-detect fast interrupt */
210 IQ_Dummy, /* External fast interrupt */
211 SER_uart_irda_handler, /* UART IrDA interrupt */
212 IQ_GsmTim_Handler, /* ULPD GSM timer */
213 IQ_Dummy /* GEA interrupt */
214 #elif (CHIPSET == 9)
215 IQ_Dummy, /* LEAD */
216 IQ_Dummy, /* SIM card-detect fast interrupt */
217 IQ_Dummy, /* External fast interrupt */
218 SER_uart_irda_handler, /* UART IrDA interrupt */
219 IQ_GsmTim_Handler, /* ULPD GSM timer */
220 IQ_Dummy, /* Not mapped interrupt */
221 IQ_Dummy, /* Not mapped interrupt */
222 IQ_Dummy, /* Not mapped interrupt */
223 IQ_Dummy, /* Not mapped interrupt */
224 IQ_Dummy /* Reserved */
225 #else
226 IQ_Dummy /* LEAD */
227 #endif
228 };
229
230 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
231 /*--------------------------------------------------------------*/
232 /* fiqHandlers */
233 /*--------------------------------------------------------------*/
234 /* Parameters :none */
235 /* Return :none */
236 /* Functionality : Table of interrupt handlers */
237 /* These MUST be 32-bit entries */
238 /*--------------------------------------------------------------*/
239
240 SYS_FUNC fiqHandlers[IQ_NUM_INT] =
241 {
242 IQ_Dummy, /* Watchdog timer */
243 IQ_Dummy, /* timer 1 */
244 IQ_Dummy, /* timer 2 */
245 #if ((OP_L1_STANDALONE == 0) && (RF_FAM == 35))
246 TSP_RxHandler, /* 3 TSP */
247 #else
248 IQ_Dummy, /* AIRQ 3 */
249 #endif
250 IQ_Dummy, /* TPU Frame It AIRQ 4 */
251 IQ_Dummy, /* AIRQ 5 */
252 IQ_Dummy, /* AIRQ 6 */
253 IQ_Dummy, /* AIRQ 7 */
254 IQ_Dummy, /* AIRQ 8 */
255 IQ_Dummy, /* AIRQ 9 RTC Timer */
256 IQ_Dummy, /* AIRQ 10 RTC ALARM */
257 IQ_Dummy, /* AIRQ 11 ULPD GAUGING */
258 IQ_Dummy, /* AIRQ 12 */
259 IQ_Dummy, /* AIRQ 13 Spi Tx Rx interrupt */
260 IQ_Dummy, /* DMA interrupt */
261 IQ_Dummy, /* LEAD */
262 #if (OP_L1_STANDALONE == 0)
263 SIM_CD_IntHandler, /* SIM card-detect fast interrupt */
264 #else
265 IQ_Dummy, /* SIM card-detect fast interrupt */
266 #endif
267 IQ_Dummy, /* External fast interrupt */
268 IQ_Dummy, /* UART_IRDA interrupt */
269 #if (CHIPSET == 4)
270 IQ_Dummy /* ULPD GSM timer */
271 #elif ((CHIPSET == 5) || (CHIPSET == 6))
272 IQ_Dummy, /* ULPD GSM timer */
273 IQ_Dummy, /* Not mapped interrupt */
274 IQ_Dummy, /* Not mapped interrupt */
275 IQ_Dummy, /* Not mapped interrupt */
276 IQ_Dummy, /* Not mapped interrupt */
277 IQ_Dummy /* GEA interrupt */
278 #elif ((CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11))
279 IQ_Dummy, /* ULPD GSM timer */
280 IQ_Dummy /* GEA timer */
281 #elif (CHIPSET == 9)
282 IQ_Dummy, /* ULPD GSM timer */
283 IQ_Dummy, /* Not mapped interrupt */
284 IQ_Dummy, /* Not mapped interrupt */
285 IQ_Dummy, /* Not mapped interrupt */
286 IQ_Dummy, /* Not mapped interrupt */
287 IQ_Dummy /* Reserved */
288 #endif
289 };
290 #endif
291 #endif /* (CHIPSET != 12)*/
292
293 /*--------------------------------------------------------------*/
294 /* IQ_Gauging_Handler */
295 /*--------------------------------------------------------------*/
296 /* Parameters :none */
297 /* Return : none */
298 /* Functionality : Handle unused interrupts */
299 /*--------------------------------------------------------------*/
300 void IQ_Gauging_Handler(void)
301 {
302 GAUGING_Handler();
303 #if (OP_L1_STANDALONE == 0)
304 RTC_GaugingHandler();
305 #endif
306 }
307
308
309 /*--------------------------------------------------------------*/
310 /* IQ_External */
311 /*--------------------------------------------------------------*/
312 /* Parameters : none */
313 /* Return : none */
314 /* Functionality : Handle External IRQ mapped on ABB. */
315 /*--------------------------------------------------------------*/
316 void IQ_External(void)
317 {
318 #if (CHIPSET == 12)
319 // Mask external interrupt 12
320 F_INTH_DISABLE_ONE_IT(C_INTH_ABB_IRQ_IT);
321 #else
322 // Mask external interrupt 12
323 IQ_Mask(IQ_EXT);
324 #endif
325
326 // The external IRQ is mapped on the ABB interrupt.
327 // The associated HISR ABB_Hisr is activated on reception on the external IRQ.
328 if(Activate_ABB_HISR())
329 {
330 #if (CHIPSET == 12)
331 F_INTH_ENABLE_ONE_IT(C_INTH_ABB_IRQ_IT);
332 #else
333 // Mask external interrupt 12
334 IQ_Unmask(IQ_EXT);
335 #endif
336 }
337 }
338
339 #if (CHIPSET != 12)
340 /*--------------------------------------------------------------*/
341 /* IQ_Dummy */
342 /*--------------------------------------------------------------*/
343 /* Parameters :none */
344 /* Return : none */
345 /* Functionality : Handle unused interrupts */
346 /*--------------------------------------------------------------*/
347 void IQ_Dummy(void)
348 {
349 IQ_DummyCount++;
350 }
351 #endif
352
353 /*--------------------------------------------------------------*/
354 /* IQ_RTCHandler */
355 /*--------------------------------------------------------------*/
356 /* Parameters :none */
357 /* Return : none */
358 /* Functionality : Handle RTC Time interrupts */
359 /*--------------------------------------------------------------*/
360
361 void IQ_Rtc_Handler(void)
362 {
363 #if (OP_L1_STANDALONE == 0)
364 RTC_ItTimerHandle();
365 #endif
366 }
367
368 /*--------------------------------------------------------------*/
369 /* IQ_RtcA_GsmTim_Handler */
370 /*--------------------------------------------------------------*/
371 /* Parameters :none */
372 /* Return : none */
373 /* Functionality : Handle RTC ALARM or GAUGING interrupts */
374 /*--------------------------------------------------------------*/
375
376 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
377 void IQ_RtcA_Handler(void)
378 {
379 #if (OP_L1_STANDALONE == 0)
380 /* INTH_DISABLEONEIT(IQ_RTC_ALARM); *//* RTC ALARM IT */
381 if ( (* (SYS_WORD8 *) RTC_STATUS_REG) & RTC_ALARM )
382 RTC_ItAlarmHandle();
383 #endif
384 }
385
386 void IQ_GsmTim_Handler(void)
387 {
388
389 if ( (* (SYS_UWORD16 *) ULDP_GSM_TIMER_IT_REG) & ULPD_IT_TIMER_GSM )
390 {
391 // it is GSM Timer it.....
392 IQ_GsmTimerCount++;
393 }
394 }
395 #else
396 void IQ_RtcA_GsmTim_Handler(void)
397 {
398 #if (OP_L1_STANDALONE == 0)
399 if ( (* (SYS_UWORD16 *) ULDP_GSM_TIMER_IT_REG) & ULPD_IT_TIMER_GSM )
400 {
401 // it is GSM Timer it.....
402 IQ_GsmTimerCount++;
403 }
404 else
405 {
406 /* INTH_DISABLEONEIT(IQ_RTC_ALARM); *//* RTC ALARM IT */
407 if ( (* (SYS_WORD8 *) RTC_STATUS_REG) & RTC_ALARM )
408 RTC_ItAlarmHandle();
409 }
410 #endif
411 }
412 #endif
413
414 #if (BOARD == 34)
415 /*
416 * IQ_IcrHandler32
417 *
418 */
419 void IQ_IcrHandler32(void)
420 {
421 CSMI_InterruptHandler();
422 }
423 #endif
424
425 /*--------------------------------------------------------------*/
426 /* IQ_TimerHandler */
427 /*--------------------------------------------------------------*/
428 /* Parameters :none */
429 /* Return : none */
430 /* Functionality : Handle Timer interrupts */
431 /*--------------------------------------------------------------*/
432 void IQ_TimerHandler(void)
433 {
434 IQ_TimerCount++;
435 TMT_Timer_Interrupt();
436 #if (defined RVM_DAR_SWE) && (defined _GSM)
437 dar_watchdog_reset();
438 #endif
439 }
440
441 /*--------------------------------------------------------------*/
442 /* IQ_FramerHandler */
443 /*--------------------------------------------------------------*/
444 /* Parameters :none */
445 /* Return : none */
446 /* Functionality : Handle Timer interrupts */
447 /*--------------------------------------------------------------*/
448 void IQ_FrameHandler(void)
449 {
450 IQ_FrameCount++;
451 TMT_Timer_Interrupt();
452 TP_FrameIntHandler();
453 #if (OP_L1_STANDALONE == 0)
454 #if (TI_PROFILER == 1)
455 // TDMA treatment for profiling buffer
456 ti_profiler_tdma_action();
457 #endif
458 #endif
459 }
460
461 /*--------------------------------------------------------------*/
462 /* IQ_TimerHandler1 */
463 /*--------------------------------------------------------------*/
464 /* Parameters :none */
465 /* Return : none */
466 /* Functionality : Handle Timer 1 interrupts */
467 /*--------------------------------------------------------------*/
468 void IQ_TimerHandler1(void)
469 {
470 IQ_TimerCount1++;
471 #if (OP_L1_STANDALONE == 1)
472 TM_Timer1Handler();
473 #endif
474 }
475
476 /*--------------------------------------------------------------*/
477 /* IQ_TimerHandler2 */
478 /*--------------------------------------------------------------*/
479 /* Parameters :none */
480 /* Return : none */
481 /* Functionality : Handle Timer 2 interrupts */
482 /*--------------------------------------------------------------*/
483 void IQ_TimerHandler2(void)
484 {
485 IQ_TimerCount2++;
486 }
487 #if(L1_DYN_DSP_DWNLD == 1)
488
489 /*-------------------------------------------------------*/
490 /* IQ_ApiHandler() */
491 /*-------------------------------------------------------*/
492 /* Parameters : none */
493 /* Return : none */
494 /* Functionality : API int management */
495 /*-------------------------------------------------------*/
496 void IQ_ApiHandler(void)
497 {
498 l1_api_handler();
499 } /* IQ_ApiHandler() */
500 #endif
501
502
503 #if (CHIPSET !=12)
504 /*--------------------------------------------------------------*/
505 /* IQ_IRQ_isr */
506 /*--------------------------------------------------------------*/
507 /* Parameters :none */
508 /* Return : none */
509 /* Functionality : HHandle IRQ interrupts */
510 /*--------------------------------------------------------------*/
511 void IQ_IRQ_isr(void)
512 {
513 irqHandlers[((* (SYS_UWORD16 *) INTH_B_IRQ_REG) & INTH_SRC_NUM)](); /* ACK IT */
514 * (SYS_UWORD16 *) INTH_CTRL_REG |= (1 << INTH_IRQ); /* valid next IRQ */
515 }
516
517 /*--------------------------------------------------------------*/
518 /* IQ_FIQ_isr */
519 /*--------------------------------------------------------------*/
520 /* Parameters :none */
521 /* Return : none */
522 /* Functionality : Handle FIQ interrupts */
523 /*--------------------------------------------------------------*/
524 void IQ_FIQ_isr(void)
525 {
526 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
527 fiqHandlers[((* (SYS_UWORD16 *) INTH_B_FIQ_REG) & INTH_SRC_NUM)](); /* ACK IT */
528 #endif
529 * (SYS_UWORD16 *) INTH_CTRL_REG |= (1 << INTH_FIQ); /* valid next FIQ */
530 }
531 #endif /* chipset != 12 ) */
532
533 #if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
534
535 /*--------------------------------------------------------------*/
536 /* IQ_KeypadGPIOHandler */
537 /*--------------------------------------------------------------*/
538 /* Parameters : none */
539 /* Return : none */
540 /* Functionality : Handle keypad and GPIO interrupts */
541 /*--------------------------------------------------------------*/
542 // CC test 0316
543 //#include "rvm/rvm_use_id_list.h"
544 //#include "rvf/rvf_api.h"
545 //static char debug_buffer[50];
546 // end
547
548 void IQ_KeypadGPIOHandler(void)
549 {
550
551 #if (OP_L1_STANDALONE == 0)
552 /*
553 * GPIO interrupt must be checked before the keypad interrupt. The GPIO
554 * status bit is reset when the register is read.
555 */
556
557 if (AI_CheckITSource (ARMIO_GPIO_INT))
558
559 // CC test 0315
560 {
561 AI_MaskIT (ARMIO_MASKIT_GPIO);
562 //sprintf(debug_buffer, "GPIO_Interrupt");
563 //rvf_send_trace(debug_buffer, 40, NULL_PARAM, RV_TRACE_LEVEL_ERROR, RVT_USE_ID);
564 AI_UnmaskIT(ARMIO_MASKIT_GPIO); //0x0002
565 // end
566 /*
567 #ifdef RVM_MPM_SWE
568 // check if the SWE has been started
569 MPM_InterruptHandler ();
570 #elif BT_CLK_REQ_INT
571
572 BT_DRV_ClkReqInterruptHandler( );
573 #else
574 UAF_DTRInterruptHandler ();
575 #endif
576 */
577 }
578 if (AI_CheckITSource (ARMIO_KEYPDAD_INT))
579 {
580 // CC test 0316
581 //sprintf(debug_buffer, "Key_Interrupt");
582 //rvf_send_trace(debug_buffer, 40, NULL_PARAM, RV_TRACE_LEVEL_ERROR, RVT_USE_ID);
583 // end
584 kpd_key_handler ();
585 }
586
587 #endif
588 }
589
590 #elif ((BOARD == 34) || (BOARD == 42) || (BOARD == 43) || (BOARD == 45))
591
592 /*--------------------------------------------------------------*/
593 /* IQ_KeypadHandler */
594 /*--------------------------------------------------------------*/
595 /* Parameters :none */
596 /* Return : none */
597 /* Functionality : Handle keypad interrupts */
598 /*--------------------------------------------------------------*/
599 void IQ_KeypadHandler(void)
600 {
601 #if (OP_L1_STANDALONE == 0)
602 #if (BOARD == 34)
603 IQ_Mask (IQ_ARMIO);
604 #else
605 kpd_key_handler ();
606 #endif
607 #endif
608 }
609
610 #endif