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
|
#!/bin/sh
|
||||||
|
# Copyright (C) 2016 Henryk Heisig hyniu@o2.pl
|
||||||
|
|
||||||
. /lib/functions/leds.sh
|
. /lib/functions/leds.sh
|
||||||
. /lib/ipq806x.sh
|
. /lib/ipq806x.sh
|
||||||
|
|
||||||
get_status_led() {
|
boot="$(ipq806x_get_dt_led boot)"
|
||||||
case $(ipq806x_board_name) in
|
failsafe="$(ipq806x_get_dt_led failsafe)"
|
||||||
c2600)
|
running="$(ipq806x_get_dt_led running)"
|
||||||
status_led="c2600:blue:status"
|
upgrade="$(ipq806x_get_dt_led upgrade)"
|
||||||
;;
|
|
||||||
ea8500)
|
|
||||||
status_led="ea8500:white:power"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
set_state() {
|
set_state() {
|
||||||
get_status_led
|
status_led="$boot"
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
preinit)
|
preinit)
|
||||||
status_led_blink_preinit
|
status_led_blink_preinit
|
||||||
;;
|
;;
|
||||||
failsafe)
|
failsafe)
|
||||||
|
status_led_off
|
||||||
|
[ -n "$running" ] && {
|
||||||
|
status_led="$running"
|
||||||
|
status_led_off
|
||||||
|
}
|
||||||
|
status_led="$failsafe"
|
||||||
status_led_blink_failsafe
|
status_led_blink_failsafe
|
||||||
;;
|
;;
|
||||||
preinit_regular)
|
preinit_regular)
|
||||||
status_led_blink_preinit_regular
|
status_led_blink_preinit_regular
|
||||||
;;
|
;;
|
||||||
|
upgrade)
|
||||||
|
[ -n "$running" ] && {
|
||||||
|
status_led="$upgrade"
|
||||||
|
status_led_blink_preinit_regular
|
||||||
|
}
|
||||||
|
;;
|
||||||
done)
|
done)
|
||||||
|
status_led_off
|
||||||
|
[ -n "$running" ] && {
|
||||||
|
status_led="$running"
|
||||||
status_led_on
|
status_led_on
|
||||||
|
}
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,3 +59,15 @@ ipq806x_board_name() {
|
||||||
|
|
||||||
echo "$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
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blink_led() {
|
||||||
|
. /etc/diag.sh; set_state upgrade
|
||||||
|
}
|
||||||
|
|
||||||
|
append sysupgrade_pre_upgrade blink_led
|
||||||
|
|
|
@ -23,6 +23,11 @@
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &uart4;
|
serial0 = &uart4;
|
||||||
mdio-gpio0 = &mdio0;
|
mdio-gpio0 = &mdio0;
|
||||||
|
|
||||||
|
led-boot = &power;
|
||||||
|
led-failsafe = &ledgnr;
|
||||||
|
led-running = &power;
|
||||||
|
led-upgrade = &ledgnr;
|
||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
|
@ -395,12 +400,12 @@
|
||||||
label = "c2600:blue:wan";
|
label = "c2600:blue:wan";
|
||||||
gpios = <&qcom_pinmux 33 1>;
|
gpios = <&qcom_pinmux 33 1>;
|
||||||
};
|
};
|
||||||
status {
|
power: status {
|
||||||
label = "c2600:blue:status";
|
label = "c2600:blue:status";
|
||||||
gpios = <&qcom_pinmux 53 0>;
|
gpios = <&qcom_pinmux 53 0>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
};
|
};
|
||||||
ledgnr {
|
ledgnr: ledgnr {
|
||||||
label = "c2600:blue:ledgnr";
|
label = "c2600:blue:ledgnr";
|
||||||
gpios = <&qcom_pinmux 66 0>;
|
gpios = <&qcom_pinmux 66 0>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,6 +24,11 @@
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &uart4;
|
serial0 = &uart4;
|
||||||
mdio-gpio0 = &mdio0;
|
mdio-gpio0 = &mdio0;
|
||||||
|
|
||||||
|
led-boot = &power;
|
||||||
|
led-failsafe = &power;
|
||||||
|
led-running = &power;
|
||||||
|
led-upgrade = &power;
|
||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
|
@ -365,7 +370,7 @@
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
power {
|
power: power {
|
||||||
label = "ea8500:white:power";
|
label = "ea8500:white:power";
|
||||||
gpios = <&qcom_pinmux 6 1>;
|
gpios = <&qcom_pinmux 6 1>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
|
|
Loading…
Reference in a new issue