2
0
forked from Ivasoft/openwrt

ipq806x: add support for indicating the boot and upgrade state using four leds

Signed-off-by: Henryk Heisig hyniu@o2.pl
This commit is contained in:
Henryk Heisig
2016-09-30 21:36:50 +02:00
committed by John Crispin
parent 36afaae847
commit 4bdf615878
5 changed files with 54 additions and 15 deletions

View File

@@ -1,34 +1,45 @@
#!/bin/sh
# Copyright (C) 2016 Henryk Heisig hyniu@o2.pl
. /lib/functions/leds.sh
. /lib/ipq806x.sh
get_status_led() {
case $(ipq806x_board_name) in
c2600)
status_led="c2600:blue:status"
;;
ea8500)
status_led="ea8500:white:power"
;;
esac
}
boot="$(ipq806x_get_dt_led boot)"
failsafe="$(ipq806x_get_dt_led failsafe)"
running="$(ipq806x_get_dt_led running)"
upgrade="$(ipq806x_get_dt_led upgrade)"
set_state() {
get_status_led
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="$upgrade"
status_led_blink_preinit_regular
}
;;
done)
status_led_on
status_led_off
[ -n "$running" ] && {
status_led="$running"
status_led_on
}
;;
esac
}

View File

@@ -59,3 +59,15 @@ ipq806x_board_name() {
echo "$name"
}
ipq806x_get_dt_led() {
local label
local ledpath
local basepath="/sys/firmware/devicetree/base"
local nodepath="$basepath/aliases/led-$1"
[ -f "$nodepath" ] && ledpath=$(cat "$nodepath")
[ -n "$ledpath" ] && label=$(cat "$basepath$ledpath/label")
echo "$label"
}

View File

@@ -59,3 +59,9 @@ platform_do_upgrade() {
;;
esac
}
blink_led() {
. /etc/diag.sh; set_state upgrade
}
append sysupgrade_pre_upgrade blink_led