1c609719bSwdenk /* 204a85b3bSwdenk * (C) Copyright 2000-2004 3c609719bSwdenk * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4c609719bSwdenk * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6c609719bSwdenk */ 7c609719bSwdenk 8c609719bSwdenk /* 9c609719bSwdenk * The purpose of this code is to signal the operational status of a 10c609719bSwdenk * target which usually boots over the network; while running in 11c609719bSwdenk * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply 12c609719bSwdenk * message has been received, the LED is turned off. The Linux 13c609719bSwdenk * kernel, once it is running, will start blinking the LED again, 14c609719bSwdenk * with another frequency. 15c609719bSwdenk */ 16c609719bSwdenk 17c609719bSwdenk #ifndef _STATUS_LED_H_ 18c609719bSwdenk #define _STATUS_LED_H_ 19c609719bSwdenk 202d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS 21c609719bSwdenk 222d8d190cSUri Mashiach #define LED_STATUS_PERIOD (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ) 232d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS1 242d8d190cSUri Mashiach #define LED_STATUS_PERIOD1 (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ1) 252d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS1 */ 262d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS2 272d8d190cSUri Mashiach #define LED_STATUS_PERIOD2 (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ2) 282d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS2 */ 292d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS3 302d8d190cSUri Mashiach #define LED_STATUS_PERIOD3 (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ3) 312d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS3 */ 322d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS4 332d8d190cSUri Mashiach #define LED_STATUS_PERIOD4 (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ4) 342d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS4 */ 352d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS5 362d8d190cSUri Mashiach #define LED_STATUS_PERIOD5 (CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ5) 372d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS5 */ 38c609719bSwdenk 3913cfbe51SBernhard Nortmann void status_led_init(void); 40c609719bSwdenk void status_led_tick (unsigned long timestamp); 41c609719bSwdenk void status_led_set (int led, int state); 42c609719bSwdenk 43c609719bSwdenk /***** MVS v1 **********************************************************/ 44*5b8e76c3SHeiko Schocher #if (defined(CONFIG_MVS) && CONFIG_MVS < 2) 45c609719bSwdenk # define STATUS_LED_PAR im_ioport.iop_pdpar 46c609719bSwdenk # define STATUS_LED_DIR im_ioport.iop_pddir 47c609719bSwdenk # undef STATUS_LED_ODR 48c609719bSwdenk # define STATUS_LED_DAT im_ioport.iop_pddat 49c609719bSwdenk 50c609719bSwdenk # define STATUS_LED_ACTIVE 1 /* LED on for bit == 1 */ 51c609719bSwdenk 52c609719bSwdenk /***** Someone else defines these *************************************/ 53c609719bSwdenk #elif defined(STATUS_LED_PAR) 54c609719bSwdenk /* 55c609719bSwdenk * ADVICE: Define in your board configuration file rather than 56c609719bSwdenk * filling this file up with lots of custom board stuff. 57c609719bSwdenk */ 58c609719bSwdenk 594707fb50SBartlomiej Sieka #elif defined(CONFIG_V38B) 604707fb50SBartlomiej Sieka 614707fb50SBartlomiej Sieka # define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ 624707fb50SBartlomiej Sieka 632d8d190cSUri Mashiach #elif defined(CONFIG_LED_STATUS_BOARD_SPECIFIC) 64566a494fSHeiko Schocher /* led_id_t is unsigned long mask */ 65566a494fSHeiko Schocher typedef unsigned long led_id_t; 66566a494fSHeiko Schocher 67566a494fSHeiko Schocher extern void __led_toggle (led_id_t mask); 68566a494fSHeiko Schocher extern void __led_init (led_id_t mask, int state); 69566a494fSHeiko Schocher extern void __led_set (led_id_t mask, int state); 70a8eeaf2fSStefan Roese void __led_blink(led_id_t mask, int freq); 71c609719bSwdenk #else 72c609719bSwdenk # error Status LED configuration missing 73c609719bSwdenk #endif 74c609719bSwdenk /************************************************************************/ 75c609719bSwdenk 762d8d190cSUri Mashiach #ifndef CONFIG_LED_STATUS_BOARD_SPECIFIC 7748b42616Swdenk # include <asm/status_led.h> 7848b42616Swdenk #endif 7948b42616Swdenk 802d8d190cSUri Mashiach #endif /* CONFIG_LED_STATUS */ 81c5d4001aSJeroen Hofstee 82bd86220fSPeter Pearse /* 83bd86220fSPeter Pearse * Coloured LEDs API 84bd86220fSPeter Pearse */ 85bd86220fSPeter Pearse #ifndef __ASSEMBLY__ 86c5d4001aSJeroen Hofstee void coloured_LED_init(void); 87c5d4001aSJeroen Hofstee void red_led_on(void); 88c5d4001aSJeroen Hofstee void red_led_off(void); 89c5d4001aSJeroen Hofstee void green_led_on(void); 90c5d4001aSJeroen Hofstee void green_led_off(void); 91c5d4001aSJeroen Hofstee void yellow_led_on(void); 92c5d4001aSJeroen Hofstee void yellow_led_off(void); 93c5d4001aSJeroen Hofstee void blue_led_on(void); 94c5d4001aSJeroen Hofstee void blue_led_off(void); 95bd86220fSPeter Pearse #else 96bd86220fSPeter Pearse .extern LED_init 972d3be7c4SJason Kridner .extern red_led_on 982d3be7c4SJason Kridner .extern red_led_off 992d3be7c4SJason Kridner .extern yellow_led_on 1002d3be7c4SJason Kridner .extern yellow_led_off 1012d3be7c4SJason Kridner .extern green_led_on 1022d3be7c4SJason Kridner .extern green_led_off 1032d3be7c4SJason Kridner .extern blue_led_on 1042d3be7c4SJason Kridner .extern blue_led_off 105bd86220fSPeter Pearse #endif 106bd86220fSPeter Pearse 107c609719bSwdenk #endif /* _STATUS_LED_H_ */ 108