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