1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2000-2004
4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 */
6
7/*
8 * The purpose of this code is to signal the operational status of a
9 * target which usually boots over the network; while running in
10 * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply
11 * message has been received, the LED is turned off. The Linux
12 * kernel, once it is running, will start blinking the LED again,
13 * with another frequency.
14 */
15
16#ifndef _STATUS_LED_H_
17#define	_STATUS_LED_H_
18
19#ifdef CONFIG_LED_STATUS
20
21#define LED_STATUS_PERIOD	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ)
22#ifdef CONFIG_LED_STATUS1
23#define LED_STATUS_PERIOD1	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ1)
24#endif /* CONFIG_LED_STATUS1 */
25#ifdef CONFIG_LED_STATUS2
26#define LED_STATUS_PERIOD2	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ2)
27#endif /* CONFIG_LED_STATUS2 */
28#ifdef CONFIG_LED_STATUS3
29#define LED_STATUS_PERIOD3	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ3)
30#endif /* CONFIG_LED_STATUS3 */
31#ifdef CONFIG_LED_STATUS4
32#define LED_STATUS_PERIOD4	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ4)
33#endif /* CONFIG_LED_STATUS4 */
34#ifdef CONFIG_LED_STATUS5
35#define LED_STATUS_PERIOD5	(CONFIG_SYS_HZ / CONFIG_LED_STATUS_FREQ5)
36#endif /* CONFIG_LED_STATUS5 */
37
38void status_led_init(void);
39void status_led_tick(unsigned long timestamp);
40void status_led_set(int led, int state);
41
42/*****  MVS v1  **********************************************************/
43#if (defined(CONFIG_MVS) && CONFIG_MVS < 2)
44# define STATUS_LED_PAR		im_ioport.iop_pdpar
45# define STATUS_LED_DIR		im_ioport.iop_pddir
46# undef  STATUS_LED_ODR
47# define STATUS_LED_DAT		im_ioport.iop_pddat
48
49# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/
50
51/*****  Someone else defines these  *************************************/
52#elif defined(STATUS_LED_PAR)
53  /*
54   * ADVICE: Define in your board configuration file rather than
55   * filling this file up with lots of custom board stuff.
56   */
57
58#elif defined(CONFIG_LED_STATUS_BOARD_SPECIFIC)
59/* led_id_t is unsigned long mask */
60typedef unsigned long led_id_t;
61
62extern void __led_toggle (led_id_t mask);
63extern void __led_init (led_id_t mask, int state);
64extern void __led_set (led_id_t mask, int state);
65void __led_blink(led_id_t mask, int freq);
66#else
67# error Status LED configuration missing
68#endif
69/************************************************************************/
70
71#ifndef CONFIG_LED_STATUS_BOARD_SPECIFIC
72# include <asm/status_led.h>
73#endif
74
75#endif	/* CONFIG_LED_STATUS	*/
76
77/*
78 * Coloured LEDs API
79 */
80#ifndef	__ASSEMBLY__
81void coloured_LED_init(void);
82void red_led_on(void);
83void red_led_off(void);
84void green_led_on(void);
85void green_led_off(void);
86void yellow_led_on(void);
87void yellow_led_off(void);
88void blue_led_on(void);
89void blue_led_off(void);
90#else
91	.extern LED_init
92	.extern red_led_on
93	.extern red_led_off
94	.extern yellow_led_on
95	.extern yellow_led_off
96	.extern green_led_on
97	.extern green_led_off
98	.extern blue_led_on
99	.extern blue_led_off
100#endif
101
102#endif	/* _STATUS_LED_H_	*/
103