x86: Enable DIAG LED on Geos
Based on a patch from Chris Blake <chrisrblake93@gmail.com>, except let's do it by using the LED configuration instead of hard-coding it for each board type. And try using /bin/board_detect to do the default behaviour, on the first boot where the config hasn't yet been generated. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
parent
27a635f0b4
commit
add465f1be
|
@ -13,7 +13,7 @@ case "$board" in
|
||||||
traverse-technologies-geos)
|
traverse-technologies-geos)
|
||||||
ucidef_set_led_netdev "lan" "LAN" "geos:1" "br-lan" "tx rx"
|
ucidef_set_led_netdev "lan" "LAN" "geos:1" "br-lan" "tx rx"
|
||||||
ucidef_set_led_netdev "wlan" "WiFi" "geos:2" "phy0tpt"
|
ucidef_set_led_netdev "wlan" "WiFi" "geos:2" "phy0tpt"
|
||||||
ucidef_set_led_default "diag" "DIAG" "geos:3" "0"
|
ucidef_set_led_default "diag" "DIAG" "geos:3" "1"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
board_config_flush
|
board_config_flush
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright © 2017 OpenWrt.org
|
||||||
|
#
|
||||||
|
|
||||||
|
. /lib/functions.sh
|
||||||
|
. /lib/functions/leds.sh
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
preinit_match_diag_led() {
|
||||||
|
local CFG keys key cfg name sysfs default
|
||||||
|
|
||||||
|
CFG=/etc/board.json
|
||||||
|
if [ ! -s $CFG ]; then
|
||||||
|
CFG=/tmp/board.json
|
||||||
|
[ -s /tmp/sysinfo/model ] || return
|
||||||
|
/bin/board_detect $CFG || return
|
||||||
|
fi
|
||||||
|
|
||||||
|
json_init
|
||||||
|
json_load "$(cat $CFG)"
|
||||||
|
json_get_keys keys led
|
||||||
|
json_select led
|
||||||
|
for key in $keys; do
|
||||||
|
json_select "$key"
|
||||||
|
json_get_vars name sysfs default
|
||||||
|
|
||||||
|
if [ "$name" = "DIAG" -a "$default" = "1" ]; then
|
||||||
|
status_led="$sysfs"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
json_select ..
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
match_diag_led() {
|
||||||
|
local name
|
||||||
|
local default
|
||||||
|
local sysfs
|
||||||
|
config_get name "$1" name
|
||||||
|
config_get default "$1" default
|
||||||
|
config_get sysfs "$1" sysfs
|
||||||
|
|
||||||
|
if [ "$name" = "DIAG" -a "$default" = "1" ]; then
|
||||||
|
status_led="$sysfs"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_status_led() {
|
||||||
|
if [ -s /etc/config/system ]; then
|
||||||
|
config_load system
|
||||||
|
config_foreach match_diag_led led
|
||||||
|
else
|
||||||
|
preinit_match_diag_led
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
set_state() {
|
||||||
|
get_status_led
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
preinit)
|
||||||
|
status_led_blink_preinit
|
||||||
|
;;
|
||||||
|
|
||||||
|
failsafe)
|
||||||
|
status_led_blink_failsafe
|
||||||
|
;;
|
||||||
|
|
||||||
|
preinit_regular)
|
||||||
|
status_led_blink_preinit_regular
|
||||||
|
;;
|
||||||
|
|
||||||
|
done)
|
||||||
|
status_led_on
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
Loading…
Reference in New Issue