bcm27xx: base-files: diag: improve LEDs behaviour
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 3 Jul 2024 18:56:56 +0000 (20:56 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 3 Jul 2024 18:56:56 +0000 (20:56 +0200)
As reported in https://github.com/openwrt/openwrt/issues/15834 using the PWR
LED for indicating diag status is confusing since this is usually used for
power supply failures on RPi devices.
This commit uses ACT LED for diag status and restores it to mmc activity.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/bcm27xx/base-files/etc/diag.sh

index 601448fbe31a401247d892c215a31a0a5f2d9e70..c0c8e7f2cfa1297dc6cdbf33943aa9958f250532 100644 (file)
@@ -5,11 +5,23 @@
 . /lib/functions.sh
 . /lib/functions/leds.sh
 
+status_led_restore_trigger() {
+       local led_lc=$(echo "$status_led" | awk '{print tolower($0)}')
+       local led_path="/proc/device-tree/leds/led-$led_lc"
+       local led_trigger
+
+       [ -d "$led_path" ] && \
+               led_trigger=$(cat "$led_path/linux,default-trigger" 2>/dev/null)
+
+       [ -n "$led_trigger" ] && \
+               led_set_attr $status_led "trigger" "$led_trigger"
+}
+
 set_state() {
-       if [ -d "/sys/class/leds/PWR" ]; then
-               status_led="PWR"
-       else
+       if [ -d "/sys/class/leds/ACT" ]; then
                status_led="ACT"
+       else
+               return
        fi
 
        case "$1" in
@@ -22,11 +34,11 @@ set_state() {
        preinit_regular)
                status_led_blink_preinit_regular
                ;;
-        upgrade)
-                status_led_blink_preinit_regular
-                ;;
+       upgrade)
+               status_led_blink_preinit_regular
+               ;;
        done)
-               status_led_on
+               status_led_restore_trigger
                ;;
        esac
 }