]>
Commit | Line | Data |
---|---|---|
c609719b | 1 | /* |
04a85b3b | 2 | * (C) Copyright 2000-2004 |
c609719b WD |
3 | * Wolfgang Denk, DENX Software Engineering, [email protected]. |
4 | * | |
5 | * See file CREDITS for list of people who contributed to this | |
6 | * project. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License as | |
10 | * published by the Free Software Foundation; either version 2 of | |
11 | * the License, or (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | * MA 02111-1307 USA | |
22 | */ | |
23 | ||
24 | /* | |
25 | * The purpose of this code is to signal the operational status of a | |
26 | * target which usually boots over the network; while running in | |
27 | * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply | |
28 | * message has been received, the LED is turned off. The Linux | |
29 | * kernel, once it is running, will start blinking the LED again, | |
30 | * with another frequency. | |
31 | */ | |
32 | ||
33 | #ifndef _STATUS_LED_H_ | |
34 | #define _STATUS_LED_H_ | |
35 | ||
36 | #ifdef CONFIG_STATUS_LED | |
37 | ||
38 | #define STATUS_LED_OFF 0 | |
39 | #define STATUS_LED_BLINKING 1 | |
40 | #define STATUS_LED_ON 2 | |
41 | ||
42 | void status_led_tick (unsigned long timestamp); | |
43 | void status_led_set (int led, int state); | |
44 | ||
45 | /***** TQM8xxL ********************************************************/ | |
77efe35f | 46 | #if defined(CONFIG_TQM8xxL) |
c609719b WD |
47 | # define STATUS_LED_PAR im_cpm.cp_pbpar |
48 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
49 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
50 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
51 | ||
52 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 53 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
54 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
55 | ||
56 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
57 | ||
58 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
59 | ||
60 | /***** MVS v1 **********************************************************/ | |
61 | #elif (defined(CONFIG_MVS) && CONFIG_MVS < 2) | |
62 | # define STATUS_LED_PAR im_ioport.iop_pdpar | |
63 | # define STATUS_LED_DIR im_ioport.iop_pddir | |
64 | # undef STATUS_LED_ODR | |
65 | # define STATUS_LED_DAT im_ioport.iop_pddat | |
66 | ||
67 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 68 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
69 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
70 | ||
71 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
72 | ||
73 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
74 | ||
75 | /***** ETX_094 ********************************************************/ | |
76 | #elif defined(CONFIG_ETX094) | |
77 | ||
78 | # define STATUS_LED_PAR im_ioport.iop_pdpar | |
79 | # define STATUS_LED_DIR im_ioport.iop_pddir | |
80 | # undef STATUS_LED_ODR | |
81 | # define STATUS_LED_DAT im_ioport.iop_pddat | |
82 | ||
83 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 84 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
85 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
86 | ||
87 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
88 | ||
89 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
90 | ||
91 | /***** GEN860T *********************************************************/ | |
92 | #elif defined(CONFIG_GEN860T) | |
93 | ||
94 | # define STATUS_LED_PAR im_ioport.iop_papar | |
95 | # define STATUS_LED_DIR im_ioport.iop_padir | |
96 | # define STATUS_LED_ODR im_ioport.iop_paodr | |
97 | # define STATUS_LED_DAT im_ioport.iop_padat | |
98 | ||
99 | # define STATUS_LED_BIT 0x0800 /* Red LED 0 is on PA.4 */ | |
6d0f6bcf | 100 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 4) |
7aa78614 | 101 | # define STATUS_LED_STATE STATUS_LED_OFF |
c609719b | 102 | # define STATUS_LED_BIT1 0x0400 /* Grn LED 1 is on PA.5 */ |
6d0f6bcf | 103 | # define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 8) |
c609719b WD |
104 | # define STATUS_LED_STATE1 STATUS_LED_BLINKING |
105 | # define STATUS_LED_BIT2 0x0080 /* Red LED 2 is on PA.8 */ | |
6d0f6bcf | 106 | # define STATUS_LED_PERIOD2 (CONFIG_SYS_HZ / 4) |
7aa78614 | 107 | # define STATUS_LED_STATE2 STATUS_LED_OFF |
c609719b | 108 | # define STATUS_LED_BIT3 0x0040 /* Grn LED 3 is on PA.9 */ |
6d0f6bcf | 109 | # define STATUS_LED_PERIOD3 (CONFIG_SYS_HZ / 4) |
7aa78614 | 110 | # define STATUS_LED_STATE3 STATUS_LED_OFF |
c609719b WD |
111 | |
112 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
7aa78614 | 113 | # define STATUS_LED_BOOT 1 /* Boot status on LED 1 */ |
c609719b WD |
114 | |
115 | /***** IVMS8 **********************************************************/ | |
116 | #elif defined(CONFIG_IVMS8) | |
117 | ||
118 | # define STATUS_LED_PAR im_cpm.cp_pbpar | |
119 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
120 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
121 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
122 | ||
123 | # define STATUS_LED_BIT 0x00000010 /* LED 0 is on PB.27 */ | |
6d0f6bcf | 124 | # define STATUS_LED_PERIOD (1 * CONFIG_SYS_HZ) |
c609719b WD |
125 | # define STATUS_LED_STATE STATUS_LED_OFF |
126 | # define STATUS_LED_BIT1 0x00000020 /* LED 1 is on PB.26 */ | |
6d0f6bcf | 127 | # define STATUS_LED_PERIOD1 (1 * CONFIG_SYS_HZ) |
c609719b WD |
128 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
129 | /* IDE LED usable for other purposes, too */ | |
130 | # define STATUS_LED_BIT2 0x00000008 /* LED 2 is on PB.28 */ | |
6d0f6bcf | 131 | # define STATUS_LED_PERIOD2 (1 * CONFIG_SYS_HZ) |
c609719b WD |
132 | # define STATUS_LED_STATE2 STATUS_LED_OFF |
133 | ||
134 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
135 | ||
136 | # define STATUS_ILOCK_SWITCH 0x00800000 /* ILOCK switch in IRQ4 */ | |
137 | ||
6d0f6bcf | 138 | # define STATUS_ILOCK_PERIOD (CONFIG_SYS_HZ / 10) /* about every 100 ms */ |
c609719b WD |
139 | |
140 | # define STATUS_LED_YELLOW 0 | |
141 | # define STATUS_LED_GREEN 1 | |
142 | # define STATUS_LED_BOOT 2 /* IDE LED used for boot status */ | |
143 | ||
144 | /***** IVML24 *********************************************************/ | |
145 | #elif defined(CONFIG_IVML24) | |
146 | ||
147 | # define STATUS_LED_PAR im_cpm.cp_pbpar | |
148 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
149 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
150 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
151 | ||
152 | # define STATUS_LED_BIT 0x00000010 /* LED 0 is on PB.27 */ | |
6d0f6bcf | 153 | # define STATUS_LED_PERIOD (1 * CONFIG_SYS_HZ) |
c609719b WD |
154 | # define STATUS_LED_STATE STATUS_LED_OFF |
155 | # define STATUS_LED_BIT1 0x00000020 /* LED 1 is on PB.26 */ | |
6d0f6bcf | 156 | # define STATUS_LED_PERIOD1 (1 * CONFIG_SYS_HZ) |
c609719b WD |
157 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
158 | /* IDE LED usable for other purposes, too */ | |
159 | # define STATUS_LED_BIT2 0x00000008 /* LED 2 is on PB.28 */ | |
6d0f6bcf | 160 | # define STATUS_LED_PERIOD2 (1 * CONFIG_SYS_HZ) |
c609719b WD |
161 | # define STATUS_LED_STATE2 STATUS_LED_OFF |
162 | ||
163 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
164 | ||
165 | # define STATUS_ILOCK_SWITCH 0x00004000 /* ILOCK is on PB.17 */ | |
166 | ||
6d0f6bcf | 167 | # define STATUS_ILOCK_PERIOD (CONFIG_SYS_HZ / 10) /* about every 100 ms */ |
c609719b WD |
168 | |
169 | # define STATUS_LED_YELLOW 0 | |
170 | # define STATUS_LED_GREEN 1 | |
171 | # define STATUS_LED_BOOT 2 /* IDE LED used for boot status */ | |
172 | ||
173 | /***** LANTEC *********************************************************/ | |
174 | #elif defined(CONFIG_LANTEC) | |
175 | ||
176 | # define STATUS_LED_PAR im_ioport.iop_pdpar | |
177 | # define STATUS_LED_DIR im_ioport.iop_pddir | |
178 | # undef STATUS_LED_ODR | |
179 | # define STATUS_LED_DAT im_ioport.iop_pddat | |
180 | ||
181 | # if CONFIG_LATEC < 2 | |
182 | # define STATUS_LED_BIT 0x1000 | |
183 | # else | |
184 | # define STATUS_LED_BIT 0x0800 | |
185 | # endif | |
6d0f6bcf | 186 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
187 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
188 | ||
189 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
190 | ||
191 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
192 | ||
c609719b WD |
193 | /***** ICU862 ********************************************************/ |
194 | #elif defined(CONFIG_ICU862) | |
195 | ||
196 | # define STATUS_LED_PAR im_ioport.iop_papar | |
197 | # define STATUS_LED_DIR im_ioport.iop_padir | |
198 | # define STATUS_LED_ODR im_ioport.iop_paodr | |
199 | # define STATUS_LED_DAT im_ioport.iop_padat | |
200 | ||
201 | # define STATUS_LED_BIT 0x4000 /* LED 0 is on PA.1 */ | |
6d0f6bcf | 202 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
203 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
204 | # define STATUS_LED_BIT1 0x1000 /* LED 1 is on PA.3 */ | |
6d0f6bcf | 205 | # define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ) |
c609719b WD |
206 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
207 | ||
208 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
209 | ||
210 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
211 | ||
212 | /***** Someone else defines these *************************************/ | |
213 | #elif defined(STATUS_LED_PAR) | |
214 | ||
215 | /* | |
216 | * ADVICE: Define in your board configuration file rather than | |
217 | * filling this file up with lots of custom board stuff. | |
218 | */ | |
219 | ||
220 | /***** NetVia ********************************************************/ | |
221 | #elif defined(CONFIG_NETVIA) | |
222 | ||
993cad93 WD |
223 | #if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1 |
224 | ||
c609719b WD |
225 | #define STATUS_LED_PAR im_ioport.iop_pdpar |
226 | #define STATUS_LED_DIR im_ioport.iop_pddir | |
227 | #undef STATUS_LED_ODR | |
228 | #define STATUS_LED_DAT im_ioport.iop_pddat | |
229 | ||
230 | # define STATUS_LED_BIT 0x0080 /* PD.8 */ | |
6d0f6bcf | 231 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
232 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
233 | ||
234 | # define STATUS_LED_BIT1 0x0040 /* PD.9 */ | |
6d0f6bcf | 235 | # define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 2) |
c609719b WD |
236 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
237 | ||
238 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
239 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
240 | ||
993cad93 | 241 | #endif |
56f94be3 | 242 | |
0db5bca8 WD |
243 | /***** CMI ********************************************************/ |
244 | #elif defined(CONFIG_CMI) | |
8bde7f77 WD |
245 | # define STATUS_LED_DIR im_mios.mios_mpiosm32ddr |
246 | # define STATUS_LED_DAT im_mios.mios_mpiosm32dr | |
0db5bca8 WD |
247 | |
248 | # define STATUS_LED_BIT 0x2000 /* Select one of the 16 possible*/ | |
249 | /* MIOS outputs */ | |
6d0f6bcf | 250 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) /* Blinking periode is 500 ms */ |
0db5bca8 WD |
251 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
252 | ||
253 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 0 */ | |
254 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
255 | ||
0608e04d | 256 | /***** KUP4K, KUP4X ****************************************************/ |
dff07e18 | 257 | #elif defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X) |
56f94be3 WD |
258 | |
259 | # define STATUS_LED_PAR im_ioport.iop_papar | |
260 | # define STATUS_LED_DIR im_ioport.iop_padir | |
261 | # define STATUS_LED_ODR im_ioport.iop_paodr | |
262 | # define STATUS_LED_DAT im_ioport.iop_padat | |
263 | ||
264 | # define STATUS_LED_BIT 0x00000300 /* green + red PA[8]=yellow, PA[7]=red, PA[6]=green */ | |
6d0f6bcf | 265 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
56f94be3 WD |
266 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
267 | ||
268 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
269 | ||
270 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
271 | ||
dc7c9a1a WD |
272 | #elif defined(CONFIG_SVM_SC8xx) |
273 | # define STATUS_LED_PAR im_cpm.cp_pbpar | |
274 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
275 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
276 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
277 | ||
278 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 279 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
dc7c9a1a WD |
280 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
281 | ||
282 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
283 | ||
284 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
285 | ||
682011ff WD |
286 | /***** RBC823 ********************************************************/ |
287 | #elif defined(CONFIG_RBC823) | |
288 | ||
289 | # define STATUS_LED_PAR im_ioport.iop_pcpar | |
290 | # define STATUS_LED_DIR im_ioport.iop_pcdir | |
291 | # undef STATUS_LED_ODR | |
292 | # define STATUS_LED_DAT im_ioport.iop_pcdat | |
293 | ||
294 | # define STATUS_LED_BIT 0x0002 /* LED 0 is on PC.14 */ | |
6d0f6bcf | 295 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
682011ff WD |
296 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
297 | # define STATUS_LED_BIT1 0x0004 /* LED 1 is on PC.13 */ | |
6d0f6bcf | 298 | # define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ) |
682011ff WD |
299 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
300 | ||
301 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
302 | ||
303 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
304 | ||
04a85b3b | 305 | /***** NetPhone ********************************************************/ |
79fa88f3 | 306 | #elif defined(CONFIG_NETPHONE) || defined(CONFIG_NETTA2) |
04a85b3b | 307 | /* XXX empty just to avoid the error */ |
6bdf4306 WD |
308 | /***** STx XTc ********************************************************/ |
309 | #elif defined(CONFIG_STXXTC) | |
310 | /* XXX empty just to avoid the error */ | |
466b7410 WD |
311 | /***** sbc8240 ********************************************************/ |
312 | #elif defined(CONFIG_WRSBC8240) | |
313 | /* XXX empty just to avoid the error */ | |
c609719b | 314 | /************************************************************************/ |
5c952cf0 WD |
315 | #elif defined(CONFIG_NIOS2) |
316 | /* XXX empty just to avoid the error */ | |
317 | /************************************************************************/ | |
4707fb50 BS |
318 | #elif defined(CONFIG_V38B) |
319 | ||
320 | # define STATUS_LED_BIT 0x0010 /* Timer7 GPIO */ | |
6d0f6bcf | 321 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
4707fb50 BS |
322 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
323 | ||
324 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
325 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
326 | ||
a11c0b85 BS |
327 | #elif defined(CONFIG_MOTIONPRO) |
328 | ||
329 | #define STATUS_LED_BIT ((vu_long *) MPC5XXX_GPT6_ENABLE) | |
6d0f6bcf | 330 | #define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 10) |
a11c0b85 BS |
331 | #define STATUS_LED_STATE STATUS_LED_BLINKING |
332 | ||
333 | #define STATUS_LED_BIT1 ((vu_long *) MPC5XXX_GPT7_ENABLE) | |
6d0f6bcf | 334 | #define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 10) |
a11c0b85 BS |
335 | #define STATUS_LED_STATE1 STATUS_LED_OFF |
336 | ||
337 | #define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
338 | ||
566a494f HS |
339 | #elif defined(CONFIG_BOARD_SPECIFIC_LED) |
340 | /* led_id_t is unsigned long mask */ | |
341 | typedef unsigned long led_id_t; | |
342 | ||
343 | extern void __led_toggle (led_id_t mask); | |
344 | extern void __led_init (led_id_t mask, int state); | |
345 | extern void __led_set (led_id_t mask, int state); | |
c609719b WD |
346 | #else |
347 | # error Status LED configuration missing | |
348 | #endif | |
349 | /************************************************************************/ | |
350 | ||
48b42616 WD |
351 | #ifndef CONFIG_BOARD_SPECIFIC_LED |
352 | # include <asm/status_led.h> | |
353 | #endif | |
354 | ||
de74b9ee | 355 | /* |
bd86220f | 356 | * Coloured LEDs API |
de74b9ee | 357 | */ |
bd86220f PP |
358 | #ifndef __ASSEMBLY__ |
359 | extern void coloured_LED_init (void); | |
360 | extern void red_LED_on(void); | |
361 | extern void red_LED_off(void); | |
362 | extern void green_LED_on(void); | |
363 | extern void green_LED_off(void); | |
364 | extern void yellow_LED_on(void); | |
365 | extern void yellow_LED_off(void); | |
7cdf804f TR |
366 | extern void blue_LED_on(void); |
367 | extern void blue_LED_off(void); | |
bd86220f PP |
368 | #else |
369 | .extern LED_init | |
370 | .extern red_LED_on | |
371 | .extern red_LED_off | |
372 | .extern yellow_LED_on | |
373 | .extern yellow_LED_off | |
374 | .extern green_LED_on | |
375 | .extern green_LED_off | |
7cdf804f TR |
376 | .extern blue_LED_on |
377 | .extern blue_LED_off | |
bd86220f PP |
378 | #endif |
379 | ||
c609719b WD |
380 | #endif /* CONFIG_STATUS_LED */ |
381 | ||
382 | #endif /* _STATUS_LED_H_ */ |