FreeCalypso > hg > fc-tourmaline
comparison src/cs/drivers/drv_core/inth/inth.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4e78acac3d88 |
---|---|
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 : inth.c | |
12 | |
13 Description : inth.c saturn interupt handler | |
14 | |
15 Project : drivers | |
16 | |
17 Author : pmonteil@tif.ti.com Patrice Monteil. | |
18 | |
19 Version number : 1.15 | |
20 | |
21 Date : 05/23/03 | |
22 | |
23 Previous delta : 12/19/00 14:39:21 | |
24 | |
25 SCCS file : /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release_gprs/RELEASE_GPRS/drivers1/common/SCCS/s.inth.c | |
26 | |
27 Sccs Id (SID) : '@(#) inth.c 1.8 01/30/01 10:22:26 ' | |
28 | |
29 | |
30 *****************************************************************************/ | |
31 | |
32 #include "l1sw.cfg" | |
33 #include "chipset.cfg" | |
34 | |
35 | |
36 #if (CHIPSET != 12) | |
37 | |
38 #if (OP_L1_STANDALONE == 0) | |
39 #include "main/sys_types.h" | |
40 #else | |
41 #include "sys_types.h" | |
42 #endif | |
43 #include "memif/mem.h" | |
44 #include "inth.h" | |
45 | |
46 /*-------------------------------------------------------------- | |
47 * INTH_Ack() | |
48 *-------------------------------------------------------------- | |
49 * Parameters : num of it | |
50 * Return : none | |
51 * Functionality :Acknowledge an interrupt and return the origin | |
52 * of the interrupt (binary format) | |
53 *--------------------------------------------------------------*/ | |
54 | |
55 SYS_UWORD16 INTH_Ack (int intARM) | |
56 { | |
57 if (intARM == INTH_IRQ) | |
58 return((* (volatile SYS_UWORD16 *) INTH_B_IRQ_REG) & INTH_SRC_NUM); | |
59 else | |
60 return((* (volatile SYS_UWORD16 *) INTH_B_FIQ_REG) & INTH_SRC_NUM); | |
61 } | |
62 | |
63 /*-------------------------------------------------------------- | |
64 * INTH_GetPending() | |
65 *-------------------------------------------------------------- | |
66 * Parameters : none | |
67 * Return : none | |
68 * Functionality : Return the pending interrupts | |
69 *--------------------------------------------------------------*/ | |
70 | |
71 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11)) | |
72 unsigned long INTH_GetPending (void) | |
73 { | |
74 return((unsigned long)((* (volatile SYS_UWORD16 *) INTH_IT_REG1) | | |
75 ((* (volatile SYS_UWORD16 *) INTH_IT_REG2) << 16))); | |
76 } | |
77 #else | |
78 unsigned short INTH_GetPending (void) | |
79 { | |
80 return(* (volatile SYS_UWORD16 *) INTH_IT_REG); | |
81 } | |
82 #endif | |
83 | |
84 /*-------------------------------------------------------------- | |
85 * INTH_InitLevel() | |
86 *-------------------------------------------------------------- | |
87 * Parameters : num it,FIQ/IRQ,priority level,edge/level. | |
88 * Return : none | |
89 * Functionality : Initialize an interrupt | |
90 * - put it on IRQ or FIQ | |
91 * - set its priority level | |
92 * | |
93 *--------------------------------------------------------------*/ | |
94 | |
95 void INTH_InitLevel (int inputInt, int FIQ_nIRQ, int priority, int edge) | |
96 { | |
97 volatile SYS_UWORD16 *inthLevelReg = (SYS_UWORD16 *) INTH_EXT_REG; | |
98 | |
99 inthLevelReg = inthLevelReg + inputInt; | |
100 | |
101 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11)) | |
102 *inthLevelReg = (FIQ_nIRQ | (edge << 1) | (priority << 2)); | |
103 #else | |
104 *inthLevelReg = (FIQ_nIRQ | (priority << 1) | (edge << 5)); | |
105 #endif | |
106 } | |
107 | |
108 /*-------------------------------------------------------------- | |
109 * INTH_ResetIT() | |
110 *-------------------------------------------------------------- | |
111 * Parameters : none | |
112 * Return : none | |
113 * Functionality : reset the inth it register | |
114 *--------------------------------------------------------------*/ | |
115 | |
116 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11)) | |
117 unsigned long INTH_ResetIT (void) | |
118 { | |
119 * (volatile SYS_UWORD16 *) INTH_IT_REG1 &= 0x0000; | |
120 * (volatile SYS_UWORD16 *) INTH_IT_REG2 &= 0x0000; | |
121 return((unsigned long)((* (volatile SYS_UWORD16 *) INTH_IT_REG1) | | |
122 ((* (volatile SYS_UWORD16 *) INTH_IT_REG2) << 16))); | |
123 } | |
124 #else | |
125 unsigned short INTH_ResetIT (void) | |
126 { | |
127 * (volatile SYS_UWORD16 *) INTH_IT_REG &= 0x0000; | |
128 return(* (volatile SYS_UWORD16 *) INTH_IT_REG); | |
129 } | |
130 #endif | |
131 | |
132 | |
133 #endif /* endif chipset != 12 */ | |
134 | |
135 | |
136 |