]>
Commit | Line | Data |
---|---|---|
c609719b | 1 | /* |
04a85b3b | 2 | * (C) Copyright 2000-2004 |
c609719b WD |
3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
4 | * | |
1a459660 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
c609719b WD |
6 | */ |
7 | ||
8 | /* | |
9 | * The purpose of this code is to signal the operational status of a | |
10 | * target which usually boots over the network; while running in | |
11 | * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply | |
12 | * message has been received, the LED is turned off. The Linux | |
13 | * kernel, once it is running, will start blinking the LED again, | |
14 | * with another frequency. | |
15 | */ | |
16 | ||
17 | #ifndef _STATUS_LED_H_ | |
18 | #define _STATUS_LED_H_ | |
19 | ||
20 | #ifdef CONFIG_STATUS_LED | |
21 | ||
22 | #define STATUS_LED_OFF 0 | |
23 | #define STATUS_LED_BLINKING 1 | |
24 | #define STATUS_LED_ON 2 | |
25 | ||
26 | void status_led_tick (unsigned long timestamp); | |
27 | void status_led_set (int led, int state); | |
28 | ||
29 | /***** TQM8xxL ********************************************************/ | |
77efe35f | 30 | #if defined(CONFIG_TQM8xxL) |
c609719b WD |
31 | # define STATUS_LED_PAR im_cpm.cp_pbpar |
32 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
33 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
34 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
35 | ||
36 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 37 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
38 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
39 | ||
40 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
41 | ||
42 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
43 | ||
44 | /***** MVS v1 **********************************************************/ | |
45 | #elif (defined(CONFIG_MVS) && CONFIG_MVS < 2) | |
46 | # define STATUS_LED_PAR im_ioport.iop_pdpar | |
47 | # define STATUS_LED_DIR im_ioport.iop_pddir | |
48 | # undef STATUS_LED_ODR | |
49 | # define STATUS_LED_DAT im_ioport.iop_pddat | |
50 | ||
51 | # define STATUS_LED_BIT 0x00000001 | |
6d0f6bcf | 52 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
53 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
54 | ||
55 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
56 | ||
57 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
58 | ||
c609719b WD |
59 | /***** IVMS8 **********************************************************/ |
60 | #elif defined(CONFIG_IVMS8) | |
61 | ||
62 | # define STATUS_LED_PAR im_cpm.cp_pbpar | |
63 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
64 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
65 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
66 | ||
67 | # define STATUS_LED_BIT 0x00000010 /* LED 0 is on PB.27 */ | |
6d0f6bcf | 68 | # define STATUS_LED_PERIOD (1 * CONFIG_SYS_HZ) |
c609719b WD |
69 | # define STATUS_LED_STATE STATUS_LED_OFF |
70 | # define STATUS_LED_BIT1 0x00000020 /* LED 1 is on PB.26 */ | |
6d0f6bcf | 71 | # define STATUS_LED_PERIOD1 (1 * CONFIG_SYS_HZ) |
c609719b WD |
72 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
73 | /* IDE LED usable for other purposes, too */ | |
74 | # define STATUS_LED_BIT2 0x00000008 /* LED 2 is on PB.28 */ | |
6d0f6bcf | 75 | # define STATUS_LED_PERIOD2 (1 * CONFIG_SYS_HZ) |
c609719b WD |
76 | # define STATUS_LED_STATE2 STATUS_LED_OFF |
77 | ||
78 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
79 | ||
80 | # define STATUS_ILOCK_SWITCH 0x00800000 /* ILOCK switch in IRQ4 */ | |
81 | ||
6d0f6bcf | 82 | # define STATUS_ILOCK_PERIOD (CONFIG_SYS_HZ / 10) /* about every 100 ms */ |
c609719b WD |
83 | |
84 | # define STATUS_LED_YELLOW 0 | |
85 | # define STATUS_LED_GREEN 1 | |
86 | # define STATUS_LED_BOOT 2 /* IDE LED used for boot status */ | |
87 | ||
88 | /***** IVML24 *********************************************************/ | |
89 | #elif defined(CONFIG_IVML24) | |
90 | ||
91 | # define STATUS_LED_PAR im_cpm.cp_pbpar | |
92 | # define STATUS_LED_DIR im_cpm.cp_pbdir | |
93 | # define STATUS_LED_ODR im_cpm.cp_pbodr | |
94 | # define STATUS_LED_DAT im_cpm.cp_pbdat | |
95 | ||
96 | # define STATUS_LED_BIT 0x00000010 /* LED 0 is on PB.27 */ | |
6d0f6bcf | 97 | # define STATUS_LED_PERIOD (1 * CONFIG_SYS_HZ) |
c609719b WD |
98 | # define STATUS_LED_STATE STATUS_LED_OFF |
99 | # define STATUS_LED_BIT1 0x00000020 /* LED 1 is on PB.26 */ | |
6d0f6bcf | 100 | # define STATUS_LED_PERIOD1 (1 * CONFIG_SYS_HZ) |
c609719b WD |
101 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
102 | /* IDE LED usable for other purposes, too */ | |
103 | # define STATUS_LED_BIT2 0x00000008 /* LED 2 is on PB.28 */ | |
6d0f6bcf | 104 | # define STATUS_LED_PERIOD2 (1 * CONFIG_SYS_HZ) |
c609719b WD |
105 | # define STATUS_LED_STATE2 STATUS_LED_OFF |
106 | ||
107 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
108 | ||
109 | # define STATUS_ILOCK_SWITCH 0x00004000 /* ILOCK is on PB.17 */ | |
110 | ||
6d0f6bcf | 111 | # define STATUS_ILOCK_PERIOD (CONFIG_SYS_HZ / 10) /* about every 100 ms */ |
c609719b WD |
112 | |
113 | # define STATUS_LED_YELLOW 0 | |
114 | # define STATUS_LED_GREEN 1 | |
115 | # define STATUS_LED_BOOT 2 /* IDE LED used for boot status */ | |
116 | ||
c609719b WD |
117 | /***** Someone else defines these *************************************/ |
118 | #elif defined(STATUS_LED_PAR) | |
119 | ||
120 | /* | |
121 | * ADVICE: Define in your board configuration file rather than | |
122 | * filling this file up with lots of custom board stuff. | |
123 | */ | |
124 | ||
125 | /***** NetVia ********************************************************/ | |
126 | #elif defined(CONFIG_NETVIA) | |
127 | ||
993cad93 WD |
128 | #if !defined(CONFIG_NETVIA_VERSION) || CONFIG_NETVIA_VERSION == 1 |
129 | ||
c609719b WD |
130 | #define STATUS_LED_PAR im_ioport.iop_pdpar |
131 | #define STATUS_LED_DIR im_ioport.iop_pddir | |
132 | #undef STATUS_LED_ODR | |
133 | #define STATUS_LED_DAT im_ioport.iop_pddat | |
134 | ||
135 | # define STATUS_LED_BIT 0x0080 /* PD.8 */ | |
6d0f6bcf | 136 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
c609719b WD |
137 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
138 | ||
139 | # define STATUS_LED_BIT1 0x0040 /* PD.9 */ | |
6d0f6bcf | 140 | # define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 2) |
c609719b WD |
141 | # define STATUS_LED_STATE1 STATUS_LED_OFF |
142 | ||
143 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
144 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
145 | ||
993cad93 | 146 | #endif |
56f94be3 | 147 | |
0db5bca8 WD |
148 | /***** CMI ********************************************************/ |
149 | #elif defined(CONFIG_CMI) | |
8bde7f77 WD |
150 | # define STATUS_LED_DIR im_mios.mios_mpiosm32ddr |
151 | # define STATUS_LED_DAT im_mios.mios_mpiosm32dr | |
0db5bca8 WD |
152 | |
153 | # define STATUS_LED_BIT 0x2000 /* Select one of the 16 possible*/ | |
154 | /* MIOS outputs */ | |
6d0f6bcf | 155 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) /* Blinking periode is 500 ms */ |
0db5bca8 WD |
156 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
157 | ||
158 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 0 */ | |
159 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
160 | ||
0608e04d | 161 | /***** KUP4K, KUP4X ****************************************************/ |
dff07e18 | 162 | #elif defined(CONFIG_KUP4K) || defined(CONFIG_KUP4X) |
56f94be3 WD |
163 | |
164 | # define STATUS_LED_PAR im_ioport.iop_papar | |
165 | # define STATUS_LED_DIR im_ioport.iop_padir | |
166 | # define STATUS_LED_ODR im_ioport.iop_paodr | |
167 | # define STATUS_LED_DAT im_ioport.iop_padat | |
168 | ||
169 | # define STATUS_LED_BIT 0x00000300 /* green + red PA[8]=yellow, PA[7]=red, PA[6]=green */ | |
6d0f6bcf | 170 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
56f94be3 WD |
171 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
172 | ||
173 | # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ | |
174 | ||
175 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
176 | ||
4707fb50 BS |
177 | #elif defined(CONFIG_V38B) |
178 | ||
179 | # define STATUS_LED_BIT 0x0010 /* Timer7 GPIO */ | |
6d0f6bcf | 180 | # define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2) |
4707fb50 BS |
181 | # define STATUS_LED_STATE STATUS_LED_BLINKING |
182 | ||
183 | # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ | |
184 | # define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
185 | ||
a11c0b85 BS |
186 | #elif defined(CONFIG_MOTIONPRO) |
187 | ||
188 | #define STATUS_LED_BIT ((vu_long *) MPC5XXX_GPT6_ENABLE) | |
6d0f6bcf | 189 | #define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 10) |
a11c0b85 BS |
190 | #define STATUS_LED_STATE STATUS_LED_BLINKING |
191 | ||
192 | #define STATUS_LED_BIT1 ((vu_long *) MPC5XXX_GPT7_ENABLE) | |
6d0f6bcf | 193 | #define STATUS_LED_PERIOD1 (CONFIG_SYS_HZ / 10) |
a11c0b85 BS |
194 | #define STATUS_LED_STATE1 STATUS_LED_OFF |
195 | ||
196 | #define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ | |
197 | ||
566a494f HS |
198 | #elif defined(CONFIG_BOARD_SPECIFIC_LED) |
199 | /* led_id_t is unsigned long mask */ | |
200 | typedef unsigned long led_id_t; | |
201 | ||
202 | extern void __led_toggle (led_id_t mask); | |
203 | extern void __led_init (led_id_t mask, int state); | |
204 | extern void __led_set (led_id_t mask, int state); | |
c609719b WD |
205 | #else |
206 | # error Status LED configuration missing | |
207 | #endif | |
208 | /************************************************************************/ | |
209 | ||
48b42616 WD |
210 | #ifndef CONFIG_BOARD_SPECIFIC_LED |
211 | # include <asm/status_led.h> | |
212 | #endif | |
213 | ||
c5d4001a JH |
214 | #endif /* CONFIG_STATUS_LED */ |
215 | ||
de74b9ee | 216 | /* |
bd86220f | 217 | * Coloured LEDs API |
de74b9ee | 218 | */ |
bd86220f | 219 | #ifndef __ASSEMBLY__ |
c5d4001a JH |
220 | void coloured_LED_init(void); |
221 | void red_led_on(void); | |
222 | void red_led_off(void); | |
223 | void green_led_on(void); | |
224 | void green_led_off(void); | |
225 | void yellow_led_on(void); | |
226 | void yellow_led_off(void); | |
227 | void blue_led_on(void); | |
228 | void blue_led_off(void); | |
bd86220f PP |
229 | #else |
230 | .extern LED_init | |
2d3be7c4 JK |
231 | .extern red_led_on |
232 | .extern red_led_off | |
233 | .extern yellow_led_on | |
234 | .extern yellow_led_off | |
235 | .extern green_led_on | |
236 | .extern green_led_off | |
237 | .extern blue_led_on | |
238 | .extern blue_led_off | |
bd86220f PP |
239 | #endif |
240 | ||
c609719b | 241 | #endif /* _STATUS_LED_H_ */ |