xref: /openbmc/u-boot/include/status_led.h (revision c609719b)
1*c609719bSwdenk /*
2*c609719bSwdenk  * (C) Copyright 2000
3*c609719bSwdenk  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4*c609719bSwdenk  *
5*c609719bSwdenk  * See file CREDITS for list of people who contributed to this
6*c609719bSwdenk  * project.
7*c609719bSwdenk  *
8*c609719bSwdenk  * This program is free software; you can redistribute it and/or
9*c609719bSwdenk  * modify it under the terms of the GNU General Public License as
10*c609719bSwdenk  * published by the Free Software Foundation; either version 2 of
11*c609719bSwdenk  * the License, or (at your option) any later version.
12*c609719bSwdenk  *
13*c609719bSwdenk  * This program is distributed in the hope that it will be useful,
14*c609719bSwdenk  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15*c609719bSwdenk  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*c609719bSwdenk  * GNU General Public License for more details.
17*c609719bSwdenk  *
18*c609719bSwdenk  * You should have received a copy of the GNU General Public License
19*c609719bSwdenk  * along with this program; if not, write to the Free Software
20*c609719bSwdenk  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21*c609719bSwdenk  * MA 02111-1307 USA
22*c609719bSwdenk  */
23*c609719bSwdenk 
24*c609719bSwdenk /*
25*c609719bSwdenk  * The purpose of this code is to signal the operational status of a
26*c609719bSwdenk  * target which usually boots over the network; while running in
27*c609719bSwdenk  * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply
28*c609719bSwdenk  * message has been received, the LED is turned off. The Linux
29*c609719bSwdenk  * kernel, once it is running, will start blinking the LED again,
30*c609719bSwdenk  * with another frequency.
31*c609719bSwdenk  */
32*c609719bSwdenk 
33*c609719bSwdenk #ifndef _STATUS_LED_H_
34*c609719bSwdenk #define	_STATUS_LED_H_
35*c609719bSwdenk 
36*c609719bSwdenk #ifdef CONFIG_STATUS_LED
37*c609719bSwdenk 
38*c609719bSwdenk #define STATUS_LED_OFF		0
39*c609719bSwdenk #define STATUS_LED_BLINKING	1
40*c609719bSwdenk #define STATUS_LED_ON		2
41*c609719bSwdenk 
42*c609719bSwdenk void status_led_tick (unsigned long timestamp);
43*c609719bSwdenk void status_led_set  (int led, int state);
44*c609719bSwdenk 
45*c609719bSwdenk /*****  TQM8xxL  ********************************************************/
46*c609719bSwdenk #if defined(CONFIG_TQM8xxL)
47*c609719bSwdenk # define STATUS_LED_PAR		im_cpm.cp_pbpar
48*c609719bSwdenk # define STATUS_LED_DIR		im_cpm.cp_pbdir
49*c609719bSwdenk # define STATUS_LED_ODR		im_cpm.cp_pbodr
50*c609719bSwdenk # define STATUS_LED_DAT		im_cpm.cp_pbdat
51*c609719bSwdenk 
52*c609719bSwdenk # define STATUS_LED_BIT		0x00000001
53*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
54*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
55*c609719bSwdenk 
56*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
57*c609719bSwdenk 
58*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
59*c609719bSwdenk 
60*c609719bSwdenk /*****  MVS v1  **********************************************************/
61*c609719bSwdenk #elif (defined(CONFIG_MVS) && CONFIG_MVS < 2)
62*c609719bSwdenk # define STATUS_LED_PAR		im_ioport.iop_pdpar
63*c609719bSwdenk # define STATUS_LED_DIR		im_ioport.iop_pddir
64*c609719bSwdenk # undef  STATUS_LED_ODR
65*c609719bSwdenk # define STATUS_LED_DAT		im_ioport.iop_pddat
66*c609719bSwdenk 
67*c609719bSwdenk # define STATUS_LED_BIT		0x00000001
68*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
69*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
70*c609719bSwdenk 
71*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
72*c609719bSwdenk 
73*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
74*c609719bSwdenk 
75*c609719bSwdenk /*****  ETX_094  ********************************************************/
76*c609719bSwdenk #elif defined(CONFIG_ETX094)
77*c609719bSwdenk 
78*c609719bSwdenk # define STATUS_LED_PAR		im_ioport.iop_pdpar
79*c609719bSwdenk # define STATUS_LED_DIR		im_ioport.iop_pddir
80*c609719bSwdenk # undef  STATUS_LED_ODR
81*c609719bSwdenk # define STATUS_LED_DAT		im_ioport.iop_pddat
82*c609719bSwdenk 
83*c609719bSwdenk # define STATUS_LED_BIT		0x00000001
84*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
85*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
86*c609719bSwdenk 
87*c609719bSwdenk # define STATUS_LED_ACTIVE	0		/* LED on for bit == 0	*/
88*c609719bSwdenk 
89*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
90*c609719bSwdenk 
91*c609719bSwdenk /*****  GEN860T  *********************************************************/
92*c609719bSwdenk #elif defined(CONFIG_GEN860T)
93*c609719bSwdenk 
94*c609719bSwdenk # define STATUS_LED_PAR			im_ioport.iop_papar
95*c609719bSwdenk # define STATUS_LED_DIR			im_ioport.iop_padir
96*c609719bSwdenk # define STATUS_LED_ODR			im_ioport.iop_paodr
97*c609719bSwdenk # define STATUS_LED_DAT			im_ioport.iop_padat
98*c609719bSwdenk 
99*c609719bSwdenk # define STATUS_LED_BIT			0x0800	/* Red LED 0 is on PA.4	*/
100*c609719bSwdenk # define STATUS_LED_PERIOD		(CFG_HZ / 2)
101*c609719bSwdenk # define STATUS_LED_STATE		STATUS_LED_BLINKING
102*c609719bSwdenk # define STATUS_LED_BIT1		0x0400	/* Grn LED 1 is on PA.5	*/
103*c609719bSwdenk # define STATUS_LED_PERIOD1		(CFG_HZ / 2)
104*c609719bSwdenk # define STATUS_LED_STATE1		STATUS_LED_BLINKING
105*c609719bSwdenk # define STATUS_LED_BIT2		0x0080	/* Red LED 2 is on PA.8	*/
106*c609719bSwdenk # define STATUS_LED_PERIOD2		(CFG_HZ / 2)
107*c609719bSwdenk # define STATUS_LED_STATE2		STATUS_LED_BLINKING
108*c609719bSwdenk # define STATUS_LED_BIT3		0x0040	/* Grn LED 3 is on PA.9	*/
109*c609719bSwdenk # define STATUS_LED_PERIOD3		(CFG_HZ / 2)
110*c609719bSwdenk # define STATUS_LED_STATE3		STATUS_LED_BLINKING
111*c609719bSwdenk 
112*c609719bSwdenk # define STATUS_LED_ACTIVE		1	/* LED on for bit == 1	*/
113*c609719bSwdenk # define STATUS_LED_BOOT		0	/* Boot status on LED 1	*/
114*c609719bSwdenk 
115*c609719bSwdenk /*****  IVMS8  **********************************************************/
116*c609719bSwdenk #elif defined(CONFIG_IVMS8)
117*c609719bSwdenk 
118*c609719bSwdenk # define STATUS_LED_PAR		im_cpm.cp_pbpar
119*c609719bSwdenk # define STATUS_LED_DIR		im_cpm.cp_pbdir
120*c609719bSwdenk # define STATUS_LED_ODR		im_cpm.cp_pbodr
121*c609719bSwdenk # define STATUS_LED_DAT		im_cpm.cp_pbdat
122*c609719bSwdenk 
123*c609719bSwdenk # define STATUS_LED_BIT		0x00000010	/* LED 0 is on PB.27	*/
124*c609719bSwdenk # define STATUS_LED_PERIOD	(1 * CFG_HZ)
125*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_OFF
126*c609719bSwdenk # define STATUS_LED_BIT1	0x00000020	/* LED 1 is on PB.26	*/
127*c609719bSwdenk # define STATUS_LED_PERIOD1	(1 * CFG_HZ)
128*c609719bSwdenk # define STATUS_LED_STATE1	STATUS_LED_OFF
129*c609719bSwdenk /* IDE LED usable for other purposes, too */
130*c609719bSwdenk # define STATUS_LED_BIT2	0x00000008	/* LED 2 is on PB.28	*/
131*c609719bSwdenk # define STATUS_LED_PERIOD2	(1 * CFG_HZ)
132*c609719bSwdenk # define STATUS_LED_STATE2	STATUS_LED_OFF
133*c609719bSwdenk 
134*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
135*c609719bSwdenk 
136*c609719bSwdenk # define STATUS_ILOCK_SWITCH	0x00800000	/* ILOCK switch in IRQ4	*/
137*c609719bSwdenk 
138*c609719bSwdenk # define STATUS_ILOCK_PERIOD	(CFG_HZ / 10)	/* about every 100 ms	*/
139*c609719bSwdenk 
140*c609719bSwdenk # define STATUS_LED_YELLOW	0
141*c609719bSwdenk # define STATUS_LED_GREEN	1
142*c609719bSwdenk # define STATUS_LED_BOOT	2		/* IDE LED used for boot status */
143*c609719bSwdenk 
144*c609719bSwdenk /*****  IVML24  *********************************************************/
145*c609719bSwdenk #elif defined(CONFIG_IVML24)
146*c609719bSwdenk 
147*c609719bSwdenk # define STATUS_LED_PAR		im_cpm.cp_pbpar
148*c609719bSwdenk # define STATUS_LED_DIR		im_cpm.cp_pbdir
149*c609719bSwdenk # define STATUS_LED_ODR		im_cpm.cp_pbodr
150*c609719bSwdenk # define STATUS_LED_DAT		im_cpm.cp_pbdat
151*c609719bSwdenk 
152*c609719bSwdenk # define STATUS_LED_BIT		0x00000010	/* LED 0 is on PB.27	*/
153*c609719bSwdenk # define STATUS_LED_PERIOD	(1 * CFG_HZ)
154*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_OFF
155*c609719bSwdenk # define STATUS_LED_BIT1	0x00000020	/* LED 1 is on PB.26	*/
156*c609719bSwdenk # define STATUS_LED_PERIOD1	(1 * CFG_HZ)
157*c609719bSwdenk # define STATUS_LED_STATE1	STATUS_LED_OFF
158*c609719bSwdenk /* IDE LED usable for other purposes, too */
159*c609719bSwdenk # define STATUS_LED_BIT2	0x00000008	/* LED 2 is on PB.28	*/
160*c609719bSwdenk # define STATUS_LED_PERIOD2	(1 * CFG_HZ)
161*c609719bSwdenk # define STATUS_LED_STATE2	STATUS_LED_OFF
162*c609719bSwdenk 
163*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
164*c609719bSwdenk 
165*c609719bSwdenk # define STATUS_ILOCK_SWITCH	0x00004000	/* ILOCK is on PB.17	*/
166*c609719bSwdenk 
167*c609719bSwdenk # define STATUS_ILOCK_PERIOD	(CFG_HZ / 10)	/* about every 100 ms	*/
168*c609719bSwdenk 
169*c609719bSwdenk # define STATUS_LED_YELLOW	0
170*c609719bSwdenk # define STATUS_LED_GREEN	1
171*c609719bSwdenk # define STATUS_LED_BOOT	2		/* IDE LED used for boot status */
172*c609719bSwdenk 
173*c609719bSwdenk /*****  LANTEC  *********************************************************/
174*c609719bSwdenk #elif defined(CONFIG_LANTEC)
175*c609719bSwdenk 
176*c609719bSwdenk # define STATUS_LED_PAR		im_ioport.iop_pdpar
177*c609719bSwdenk # define STATUS_LED_DIR		im_ioport.iop_pddir
178*c609719bSwdenk # undef  STATUS_LED_ODR
179*c609719bSwdenk # define STATUS_LED_DAT		im_ioport.iop_pddat
180*c609719bSwdenk 
181*c609719bSwdenk # if CONFIG_LATEC < 2
182*c609719bSwdenk #  define STATUS_LED_BIT	0x1000
183*c609719bSwdenk # else
184*c609719bSwdenk #  define STATUS_LED_BIT	0x0800
185*c609719bSwdenk # endif
186*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
187*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
188*c609719bSwdenk 
189*c609719bSwdenk # define STATUS_LED_ACTIVE	0		/* LED on for bit == 0 */
190*c609719bSwdenk 
191*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
192*c609719bSwdenk 
193*c609719bSwdenk /*****  PCU E  and  CCM  ************************************************/
194*c609719bSwdenk #elif (defined(CONFIG_PCU_E) || defined(CONFIG_CCM))
195*c609719bSwdenk 
196*c609719bSwdenk # define STATUS_LED_PAR		im_cpm.cp_pbpar
197*c609719bSwdenk # define STATUS_LED_DIR		im_cpm.cp_pbdir
198*c609719bSwdenk # define STATUS_LED_ODR		im_cpm.cp_pbodr
199*c609719bSwdenk # define STATUS_LED_DAT		im_cpm.cp_pbdat
200*c609719bSwdenk 
201*c609719bSwdenk # define STATUS_LED_BIT		0x00010000	/* green LED is on PB.15 */
202*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
203*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
204*c609719bSwdenk 
205*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1 */
206*c609719bSwdenk 
207*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
208*c609719bSwdenk 
209*c609719bSwdenk /*****  ICU862   ********************************************************/
210*c609719bSwdenk #elif defined(CONFIG_ICU862)
211*c609719bSwdenk 
212*c609719bSwdenk # define STATUS_LED_PAR		im_ioport.iop_papar
213*c609719bSwdenk # define STATUS_LED_DIR		im_ioport.iop_padir
214*c609719bSwdenk # define STATUS_LED_ODR		im_ioport.iop_paodr
215*c609719bSwdenk # define STATUS_LED_DAT		im_ioport.iop_padat
216*c609719bSwdenk 
217*c609719bSwdenk # define STATUS_LED_BIT		0x4000		/* LED 0 is on PA.1 */
218*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
219*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
220*c609719bSwdenk # define STATUS_LED_BIT1	0x1000		/* LED 1 is on PA.3 */
221*c609719bSwdenk # define STATUS_LED_PERIOD1	(CFG_HZ)
222*c609719bSwdenk # define STATUS_LED_STATE1	STATUS_LED_OFF
223*c609719bSwdenk 
224*c609719bSwdenk # define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
225*c609719bSwdenk 
226*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
227*c609719bSwdenk 
228*c609719bSwdenk /*****  Someone else defines these  *************************************/
229*c609719bSwdenk #elif defined(STATUS_LED_PAR)
230*c609719bSwdenk 
231*c609719bSwdenk   /*
232*c609719bSwdenk    * ADVICE: Define in your board configuration file rather than
233*c609719bSwdenk    * filling this file up with lots of custom board stuff.
234*c609719bSwdenk    */
235*c609719bSwdenk 
236*c609719bSwdenk /*****  NetVia   ********************************************************/
237*c609719bSwdenk #elif defined(CONFIG_NETVIA)
238*c609719bSwdenk 
239*c609719bSwdenk #define STATUS_LED_PAR		im_ioport.iop_pdpar
240*c609719bSwdenk #define STATUS_LED_DIR		im_ioport.iop_pddir
241*c609719bSwdenk #undef  STATUS_LED_ODR
242*c609719bSwdenk #define STATUS_LED_DAT		im_ioport.iop_pddat
243*c609719bSwdenk 
244*c609719bSwdenk # define STATUS_LED_BIT		0x0080			/* PD.8 */
245*c609719bSwdenk # define STATUS_LED_PERIOD	(CFG_HZ / 2)
246*c609719bSwdenk # define STATUS_LED_STATE	STATUS_LED_BLINKING
247*c609719bSwdenk 
248*c609719bSwdenk # define STATUS_LED_BIT1	0x0040			/* PD.9 */
249*c609719bSwdenk # define STATUS_LED_PERIOD1	(CFG_HZ / 2)
250*c609719bSwdenk # define STATUS_LED_STATE1	STATUS_LED_OFF
251*c609719bSwdenk 
252*c609719bSwdenk # define STATUS_LED_ACTIVE	0		/* LED on for bit == 0	*/
253*c609719bSwdenk # define STATUS_LED_BOOT	0		/* LED 0 used for boot status */
254*c609719bSwdenk 
255*c609719bSwdenk /************************************************************************/
256*c609719bSwdenk #else
257*c609719bSwdenk # error Status LED configuration missing
258*c609719bSwdenk #endif
259*c609719bSwdenk /************************************************************************/
260*c609719bSwdenk 
261*c609719bSwdenk #endif	/* CONFIG_STATUS_LED	*/
262*c609719bSwdenk 
263*c609719bSwdenk #endif	/* _STATUS_LED_H_	*/
264