FreeCalypso > hg > leo2moko-debug
comparison chipsetsw/drivers/drv_core/inth/sys_inth32.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /* @(#) nom : sys_inth32.c SID: 1.2 date : 05/23/03 */ | |
2 /* Filename: sys_inth32.c */ | |
3 /* Version: 1.2 */ | |
4 /****************************************************************************** | |
5 * WIRELESS COMMUNICATION SYSTEM DEVELOPMENT | |
6 * | |
7 * (C) 2002 Texas Instruments France. All rights reserved | |
8 * | |
9 * Author : Francois AMAND | |
10 * | |
11 * | |
12 * Important Note | |
13 * -------------- | |
14 * | |
15 * This S/W is a preliminary version. It contains information on a product | |
16 * under development and is issued for evaluation purposes only. Features | |
17 * characteristics, data and other information are subject to change. | |
18 * | |
19 * The S/W is furnished under Non Disclosure Agreement and may be used or | |
20 * copied only in accordance with the terms of the agreement. It is an offence | |
21 * to copy the software in any way except as specifically set out in the | |
22 * agreement. No part of this document may be reproduced or transmitted in any | |
23 * form or by any means, electronic or mechanical, including photocopying and | |
24 * recording, for any purpose without the express written permission of Texas | |
25 * Instruments Inc. | |
26 * | |
27 ****************************************************************************** | |
28 * | |
29 * FILE NAME: sys_inth32.c | |
30 * | |
31 * | |
32 * PURPOSE: Interrupt Handler driver compiled in 32-bits mode. | |
33 * | |
34 * | |
35 * FILE REFERENCES: | |
36 * | |
37 * Name IO Description | |
38 * ------------- -- --------------------------------------------- | |
39 * | |
40 * | |
41 * | |
42 * EXTERNAL VARIABLES: | |
43 * | |
44 * Source: | |
45 * | |
46 * Name Type IO Description | |
47 * ------------- --------------- -- ------------------------------ | |
48 * | |
49 * | |
50 * | |
51 * EXTERNAL REFERENCES: | |
52 * | |
53 * Name Description | |
54 * ------------------ ------------------------------------------------------- | |
55 * | |
56 * | |
57 * | |
58 * ABNORMAL TERMINATION CONDITIONS, ERROR AND WARNING MESSAGES: | |
59 * | |
60 * | |
61 * | |
62 * ASSUMPTION, CONSTRAINTS, RESTRICTIONS: | |
63 * | |
64 * | |
65 * | |
66 * NOTES: | |
67 * | |
68 * | |
69 * | |
70 * REQUIREMENTS/FUNCTIONAL SPECIFICATION REFERENCES: | |
71 * | |
72 * | |
73 * | |
74 * | |
75 * DEVELOPMENT HISTORY: | |
76 * | |
77 * Date Name(s) Version Description | |
78 * ----------- -------------- ------- ------------------------------------- | |
79 * 11-Oct-2002 Francois AMAND 0.0.1 First implementation | |
80 * | |
81 * ALGORITHM: | |
82 * | |
83 * | |
84 *****************************************************************************/ | |
85 | |
86 #include "l1sw.cfg" | |
87 #include "chipset.cfg" | |
88 | |
89 #if (CHIPSET == 12) | |
90 #if (OP_L1_STANDALONE == 0) | |
91 #include "main/sys_types.h" | |
92 #else | |
93 #include "sys_types.h" | |
94 #endif | |
95 #include "sys_map.h" | |
96 #include "sys_inth.h" | |
97 | |
98 /* GLOBAL CONSTANT VARIABLES: | |
99 * | |
100 * Variables Type Description | |
101 * --------------- ------- ----------------------------------------------- | |
102 * | |
103 */ | |
104 void f_inth_dummy(void); | |
105 | |
106 | |
107 /* GLOBAL CONSTANT VARIABLES: | |
108 * | |
109 * Variables Type Description | |
110 * --------------- ------- ----------------------------------------------- | |
111 * | |
112 */ | |
113 | |
114 | |
115 | |
116 | |
117 /* GLOBAL VARIABLES: | |
118 * | |
119 * Variables Type Description | |
120 * -------------------- ----------- -------------------------------------- | |
121 * a_inth_it_handlers SYS_FUNC ** Indirect function address for IRQ and | |
122 * FIQ on main interrupt handler. | |
123 * a_inth2_irq_handlers SYS_FUNC * Indirect function address for IRQ on | |
124 * 2nd level interrupt handler. | |
125 * d_inth_dummy SYS_UWORD32 Count the number of unwanted interrupts | |
126 */ | |
127 | |
128 SYS_FUNC a_inth_it_handlers[C_INTH_NUM_INT][2] = | |
129 { // IRQ FIQ | |
130 { f_inth_dummy, f_inth_dummy }, // 0 : WATCHDOG TIMER | |
131 { f_inth_dummy, f_inth_dummy }, // 1 : TIMER 1 | |
132 { f_inth_dummy, f_inth_dummy }, // 2 : TIMER 2 | |
133 { f_inth_dummy, f_inth_dummy }, // 3 : TSP RECEIVE | |
134 { f_inth_dummy, f_inth_dummy }, // 4 : TPU FRAME | |
135 { f_inth_dummy, f_inth_dummy }, // 5 : TPU PAGE | |
136 { f_inth_dummy, f_inth_dummy }, // 6 : SIM | |
137 { f_inth_dummy, f_inth_dummy }, // 7 : UART_MODEM1 | |
138 { f_inth_dummy, f_inth_dummy }, // 8 : KEYBOARD | |
139 { f_inth_dummy, f_inth_dummy }, // 9 : RTC_TIMER | |
140 { f_inth_dummy, f_inth_dummy }, // 10 : RTC_ALARM | |
141 { f_inth_dummy, f_inth_dummy }, // 11 : ULPD_GAUGING | |
142 { f_inth_dummy, f_inth_dummy }, // 12 : ABB_IRQ | |
143 { f_inth_dummy, f_inth_dummy }, // 13 : SPI | |
144 { f_inth_dummy, f_inth_dummy }, // 14 : DMA | |
145 { f_inth_dummy, f_inth_dummy }, // 15 : API | |
146 { f_inth_dummy, f_inth_dummy }, // 16 : GPIO | |
147 { f_inth_dummy, f_inth_dummy }, // 17 : ABB_FIQ | |
148 { f_inth_dummy, f_inth_dummy }, // 18 : UART_IRDA | |
149 { f_inth_dummy, f_inth_dummy }, // 19 : ULPD GSM TIMER | |
150 { f_inth_dummy, f_inth_dummy }, // 20 : GEA | |
151 { f_inth_dummy, f_inth_dummy }, // 21 : EXTERNAL IRQ 1 | |
152 { f_inth_dummy, f_inth_dummy }, // 22 : EXTERNAL IRQ 2 | |
153 { f_inth_dummy, f_inth_dummy }, // 23 : USIM Card Detect | |
154 { f_inth_dummy, f_inth_dummy }, // 24 : USIM | |
155 { f_inth_dummy, f_inth_dummy }, // 25 : LCD | |
156 { f_inth_dummy, f_inth_dummy }, // 26 : USB | |
157 { f_inth_dummy, f_inth_dummy }, // 27 : MMC/SD/MS | |
158 { f_inth_dummy, f_inth_dummy }, // 28 : UART_MODEM2 | |
159 { f_inth_2nd_level_handler, f_inth_dummy }, // 29 : 2nd Interrupt Handler | |
160 { f_inth_dummy, f_inth_dummy }, // 30 : I2C | |
161 { f_inth_dummy, f_inth_dummy } // 31 : NAND FLASH | |
162 }; | |
163 | |
164 SYS_FUNC a_inth2_irq_handlers[C_INTH_2ND_NUM_INT] = | |
165 { | |
166 f_inth_dummy, // 0 : RNG | |
167 f_inth_dummy, // 1 : SHA1/MD5 | |
168 f_inth_dummy, // 2 : EMPU | |
169 f_inth_dummy, // 3 : Secure DMA | |
170 f_inth_dummy // 4 : Secure TIMER | |
171 }; | |
172 | |
173 SYS_UWORD32 d_inth_dummy = 0L; | |
174 | |
175 | |
176 /****************************************************************************** | |
177 * | |
178 * FUNCTION NAME: f_inth_dummy | |
179 * Handle dummy interrupts. Call of this function should never occurs | |
180 * | |
181 * | |
182 * ARGUMENT LIST: | |
183 * | |
184 * Argument Type IO Description | |
185 * ------------ ------------------- -- --------------------------------- | |
186 * chip-select. | |
187 * | |
188 * RETURN VALUE: None | |
189 * | |
190 *****************************************************************************/ | |
191 | |
192 void f_inth_dummy(void) { | |
193 d_inth_dummy++; | |
194 } /* f_inth_dummy() */ | |
195 | |
196 | |
197 | |
198 /****************************************************************************** | |
199 * | |
200 * FUNCTION NAME: f_inth_irq_handler | |
201 * Entry point of ARM IRQ sub-routine. | |
202 * | |
203 * | |
204 * ARGUMENT LIST: | |
205 * | |
206 * Argument Type IO Description | |
207 * ------------ ------------------- -- --------------------------------- | |
208 * | |
209 * RETURN VALUE: None | |
210 * | |
211 *****************************************************************************/ | |
212 | |
213 void f_inth_irq_handler(void) { | |
214 | |
215 a_inth_it_handlers[F_INTH_GET_IRQ][C_INTH_IRQ](); /* ACK IT */ | |
216 F_INTH_VALID_NEXT(C_INTH_IRQ); /* valid next IRQ */ | |
217 | |
218 } /* f_inth_irq_handler() */ | |
219 | |
220 | |
221 | |
222 /****************************************************************************** | |
223 * | |
224 * FUNCTION NAME: f_inth_fiq_handler | |
225 * Entry point of ARM FIQ sub-routine. | |
226 * | |
227 * | |
228 * ARGUMENT LIST: | |
229 * | |
230 * Argument Type IO Description | |
231 * ------------ ------------------- -- --------------------------------- | |
232 * | |
233 * RETURN VALUE: None | |
234 * | |
235 *****************************************************************************/ | |
236 | |
237 void f_inth_fiq_handler(void) { | |
238 | |
239 a_inth_it_handlers[F_INTH_GET_FIQ][C_INTH_FIQ](); /* ACK IT */ | |
240 F_INTH_VALID_NEXT(C_INTH_FIQ); /* valid next FIQ */ | |
241 | |
242 } /* f_inth_fiq_handler() */ | |
243 | |
244 | |
245 | |
246 /****************************************************************************** | |
247 * | |
248 * FUNCTION NAME: f_inth_2nd_level_handler | |
249 * Sub-routine to manage 2nd level interrupt handler. | |
250 * | |
251 * | |
252 * ARGUMENT LIST: | |
253 * | |
254 * Argument Type IO Description | |
255 * ------------ ------------------- -- --------------------------------- | |
256 * | |
257 * RETURN VALUE: None | |
258 * | |
259 *****************************************************************************/ | |
260 | |
261 void f_inth_2nd_level_handler(void) { | |
262 | |
263 a_inth2_irq_handlers[F_INTH2_GET_IRQ](); /* ACK IT */ | |
264 F_INTH2_VALID_NEXT(C_INTH_IRQ); /* Valid next IRQ */ | |
265 | |
266 } /* f_inth_2nd_level_handler() */ | |
267 | |
268 | |
269 #endif /* (CHIPSET == 12) */ |