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:
parent
36afaae847
commit
4bdf615878
5 changed files with 54 additions and 15 deletions
|
@ -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_off
|
||||
[ -n "$running" ] && {
|
||||
status_led="$running"
|
||||
status_led_on
|
||||
}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -59,3 +59,9 @@ platform_do_upgrade() {
|
|||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
blink_led() {
|
||||
. /etc/diag.sh; set_state upgrade
|
||||
}
|
||||
|
||||
append sysupgrade_pre_upgrade blink_led
|
||||
|
|
|
@ -23,6 +23,11 @@
|
|||
aliases {
|
||||
serial0 = &uart4;
|
||||
mdio-gpio0 = &mdio0;
|
||||
|
||||
led-boot = &power;
|
||||
led-failsafe = &ledgnr;
|
||||
led-running = &power;
|
||||
led-upgrade = &ledgnr;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -395,12 +400,12 @@
|
|||
label = "c2600:blue:wan";
|
||||
gpios = <&qcom_pinmux 33 1>;
|
||||
};
|
||||
status {
|
||||
power: status {
|
||||
label = "c2600:blue:status";
|
||||
gpios = <&qcom_pinmux 53 0>;
|
||||
default-state = "on";
|
||||
};
|
||||
ledgnr {
|
||||
ledgnr: ledgnr {
|
||||
label = "c2600:blue:ledgnr";
|
||||
gpios = <&qcom_pinmux 66 0>;
|
||||
};
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
aliases {
|
||||
serial0 = &uart4;
|
||||
mdio-gpio0 = &mdio0;
|
||||
|
||||
led-boot = &power;
|
||||
led-failsafe = &power;
|
||||
led-running = &power;
|
||||
led-upgrade = &power;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -365,7 +370,7 @@
|
|||
default-state = "off";
|
||||
};
|
||||
|
||||
power {
|
||||
power: power {
|
||||
label = "ea8500:white:power";
|
||||
gpios = <&qcom_pinmux 6 1>;
|
||||
default-state = "off";
|
||||
|
|
Loading…
Reference in a new issue