mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	For devices without a dedicated 'diag' LED, we use sometimes one of
other LEDs for indicating at least 'boot', 'failsafe' and 'upgrade'
stages. In some cases, at the same time these LEDs have defined default
triggers in DTS using 'linux,default-trigger' property. Current 'diag'
setup removes the trigger and turns off 'boot' LED after bootup.
One of the examples of such device is TP-Link TL-WR841N v14 (ramips)
which uses 'wlan' LED with defined 'linux,default-trigger' for 'diag':
aliases {
        led-boot = &led_wlan;
        led-failsafe = &led_wlan;
        led-upgrade = &led_wlan;
};
[...]
led_wlan: wlan {
        label = "tl-wr841n-v14:green:wlan";
        gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
        linux,default-trigger = "phy0tpt";
};
This patch extends 'diag.sh' and 'leds.sh' scripts to make sure default
trigger defined in DTS is restored for 'diag' LED which isn't used for
indicating 'running' stage.
Acked-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
		
	
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			948 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			948 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # Copyright (C) 2006-2019 OpenWrt.org
 | |
| 
 | |
| . /lib/functions/leds.sh
 | |
| 
 | |
| boot="$(get_dt_led boot)"
 | |
| failsafe="$(get_dt_led failsafe)"
 | |
| running="$(get_dt_led running)"
 | |
| upgrade="$(get_dt_led upgrade)"
 | |
| 
 | |
| set_led_state() {
 | |
| 	status_led="$boot"
 | |
| 
 | |
| 	case "$1" in
 | |
| 	preinit)
 | |
| 		status_led_blink_preinit
 | |
| 		;;
 | |
| 	failsafe)
 | |
| 		status_led_off
 | |
| 		[ -n "$running" ] && {
 | |
| 			status_led="$running"
 | |
| 			status_led_off
 | |
| 		}
 | |
| 		status_led="$failsafe"
 | |
| 		status_led_blink_failsafe
 | |
| 		;;
 | |
| 	preinit_regular)
 | |
| 		status_led_blink_preinit_regular
 | |
| 		;;
 | |
| 	upgrade)
 | |
| 		[ -n "$running" ] && {
 | |
| 			status_led="$running"
 | |
| 			status_led_off
 | |
| 		}
 | |
| 		status_led="$upgrade"
 | |
| 		status_led_blink_preinit_regular
 | |
| 		;;
 | |
| 	done)
 | |
| 		status_led_off
 | |
| 		[ "$status_led" != "$running" ] && \
 | |
| 			status_led_restore_trigger "boot"
 | |
| 		[ -n "$running" ] && {
 | |
| 			status_led="$running"
 | |
| 			status_led_on
 | |
| 		}
 | |
| 		;;
 | |
| 	esac
 | |
| }
 | |
| 
 | |
| set_state() {
 | |
| 	[ -n "$boot" -o -n "$failsafe" -o -n "$running" -o -n "$upgrade" ] && set_led_state "$1"
 | |
| }
 |