FreeCalypso > hg > leo2moko-debug
comparison chipsetsw/drivers/drv_core/inth/sys_inth.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_inth.c SID: 1.2 date : 05/23/03 */ | |
2 /* Filename: sys_inth.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_inth.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 | |
91 #if (OP_L1_STANDALONE == 0) | |
92 #include "main/sys_types.h" | |
93 #else | |
94 #include "sys_types.h" | |
95 #endif | |
96 #include "sys_inth.h" | |
97 | |
98 | |
99 /****************************************************************************** | |
100 * | |
101 * FUNCTION NAME: f_inth_init | |
102 * Setup interrupt handler configuration. | |
103 * | |
104 * | |
105 * ARGUMENT LIST: | |
106 * | |
107 * Argument Type IO Description | |
108 * ------------ ------------------- -- --------------------------------- | |
109 * | |
110 * RETURN VALUE: None | |
111 * | |
112 *****************************************************************************/ | |
113 | |
114 static void f_inth_init(SYS_UWORD16 d_it_num, T_INTH_CONFIG *p_config) | |
115 { | |
116 volatile SYS_UWORD16 *p_inth_level_reg; | |
117 SYS_UWORD8 d_it_num_temp = d_it_num; | |
118 | |
119 /* | |
120 * Get interrupt handler main address between INTH and SEC_INTH | |
121 */ | |
122 if (d_it_num < C_INTH_NUM_INT) | |
123 p_inth_level_reg = (SYS_UWORD16 *) C_INTH_EXT_REG; | |
124 | |
125 else if (d_it_num < (C_INTH_NUM_INT + C_INTH_2ND_NUM_INT)) { | |
126 p_inth_level_reg = (SYS_UWORD16 *) C_INTH2_EXT_REG; | |
127 d_it_num_temp= d_it_num - C_INTH_NUM_INT; | |
128 } | |
129 else | |
130 return; | |
131 | |
132 /* | |
133 * Set the configuration of the selected interrupt | |
134 */ | |
135 p_inth_level_reg[d_it_num_temp] = p_config->d_fiq_nirq | | |
136 (p_config->d_edge_nlevel << 1) | | |
137 (p_config->d_priority << 2); | |
138 | |
139 /* | |
140 * Set indirect table | |
141 */ | |
142 /* Is main interrupt handler? */ | |
143 if (d_it_num < C_INTH_NUM_INT) | |
144 if (p_config->d_fiq_nirq == C_INTH_IRQ) | |
145 a_inth_it_handlers[d_it_num_temp][C_INTH_IRQ] = p_config->d_it_handler; | |
146 else | |
147 a_inth_it_handlers[d_it_num_temp][C_INTH_FIQ] = p_config->d_it_handler; | |
148 /* This is the 2nd level interrupt handler */ | |
149 else | |
150 a_inth2_irq_handlers[d_it_num_temp] = p_config->d_it_handler; | |
151 | |
152 } /* f_inth_init() */ | |
153 | |
154 | |
155 | |
156 /****************************************************************************** | |
157 * | |
158 * FUNCTION NAME: f_inth_setup | |
159 * Setup interrupt handler configuration. | |
160 * | |
161 * | |
162 * ARGUMENT LIST: | |
163 * | |
164 * Argument Type IO Description | |
165 * ------------- ---------------- -- ---------------------------------- | |
166 * p_inth_config T_INTH_CONFIG * I Interrupt handler configuration. | |
167 * | |
168 * RETURN VALUE: None | |
169 * | |
170 *****************************************************************************/ | |
171 | |
172 void f_inth_setup(T_INTH_CONFIG *p_inth_config) | |
173 { | |
174 SYS_UWORD8 d_i; | |
175 | |
176 /* Setup all interrupts to IRQ or FIQ with different levels and priority */ | |
177 for (d_i = 0 ; d_i < (C_INTH_NUM_INT + C_INTH_2ND_NUM_INT) ; d_i++) { | |
178 if (p_inth_config[d_i].d_priority != 0xFF) { | |
179 f_inth_init(d_i, (T_INTH_CONFIG *)&p_inth_config[d_i]); | |
180 } | |
181 F_INTH_DISABLE_ONE_IT(d_i); | |
182 } | |
183 | |
184 } /* f_inth_setup() */ | |
185 | |
186 | |
187 | |
188 /****************************************************************************** | |
189 * | |
190 * FUNCTION NAME: f_inth_get_version | |
191 * Return the version of the interrupt handler driver. | |
192 * | |
193 * | |
194 * ARGUMENT LIST: | |
195 * | |
196 * Argument Type IO Description | |
197 * ------------ ------------------- -- --------------------------------- | |
198 * | |
199 * RETURN VALUE: Version of the INTH driver | |
200 * | |
201 *****************************************************************************/ | |
202 | |
203 SYS_UWORD16 f_inth_get_version(void) { | |
204 return(C_INTH_DRIVER_VERSION); | |
205 } | |
206 | |
207 | |
208 #endif /* (CHIPSET == 12) */ | |
209 |