diff mbox

[OpenWrt-Devel,v2,11/12] lantiq: add support for indicating the boot state using three leds

Message ID 1450960137-22752-12-git-send-email-openwrt@kresin.me
State Accepted
Headers show

Commit Message

Mathias Kresin Dec. 24, 2015, 12:28 p.m. UTC
The BTHOMEHUBV5A has a RGB power led, where every colour is perfect to
indicate the current boot state. This patch adds support for such cases.

The existing led sequences should be the same as before.

Boards which are using a led different from power (like TDW89x0) are
changed to switch of the led after boot

Signed-off-by: Mathias Kresin <openwrt@kresin.me>
---
 target/linux/lantiq/base-files/etc/board.d/01_leds | 18 --------
 target/linux/lantiq/base-files/etc/diag.sh         | 52 +++++++---------------
 target/linux/lantiq/dts/ARV4510PW.dts              |  7 ++-
 target/linux/lantiq/dts/ARV4518PWR01.dtsi          |  6 ++-
 target/linux/lantiq/dts/ARV4519PW.dts              |  7 ++-
 target/linux/lantiq/dts/ARV4520PW.dts              | 11 +++--
 target/linux/lantiq/dts/ARV4525PW.dts              |  9 ++--
 target/linux/lantiq/dts/ARV452CQW.dts              |  8 +++-
 target/linux/lantiq/dts/ARV7510PW22.dts            |  6 ++-
 target/linux/lantiq/dts/ARV7518PW.dts              |  7 ++-
 target/linux/lantiq/dts/ARV7519PW.dts              |  8 ++--
 target/linux/lantiq/dts/ARV7519RW22.dts            |  9 ++--
 target/linux/lantiq/dts/ARV7525PW.dts              |  7 ++-
 target/linux/lantiq/dts/ARV752DPW.dts              |  6 ++-
 target/linux/lantiq/dts/ARV752DPW22.dts            |  6 ++-
 target/linux/lantiq/dts/ARV8539PW22.dts            |  8 +++-
 target/linux/lantiq/dts/BTHOMEHUBV2B.dts           | 12 +++--
 target/linux/lantiq/dts/BTHOMEHUBV3A.dts           | 12 +++--
 target/linux/lantiq/dts/BTHOMEHUBV5A.dts           | 14 ++++--
 target/linux/lantiq/dts/DGN1000B.dts               |  7 ++-
 target/linux/lantiq/dts/DGN3500.dtsi               | 11 +++--
 target/linux/lantiq/dts/EASY80920.dtsi             |  7 ++-
 target/linux/lantiq/dts/FRITZ3370.dts              | 11 +++--
 target/linux/lantiq/dts/FRITZ7320.dts              |  6 ++-
 target/linux/lantiq/dts/GR7000.dts                 |  7 +--
 target/linux/lantiq/dts/H201L.dts                  |  9 ++--
 target/linux/lantiq/dts/P2601HNFX.dts              |  8 ++--
 target/linux/lantiq/dts/P2812HNUFX.dtsi            |  7 ++-
 target/linux/lantiq/dts/TDW89X0.dtsi               |  6 ++-
 target/linux/lantiq/dts/VG3503J.dtsi               |  7 ++-
 target/linux/lantiq/dts/VGV7510KW22.dtsi           |  7 ++-
 target/linux/lantiq/dts/VGV7519.dtsi               |  8 ++--
 target/linux/lantiq/dts/WBMR.dts                   |  7 ++-
 33 files changed, 189 insertions(+), 132 deletions(-)
diff mbox

Patch

diff --git a/target/linux/lantiq/base-files/etc/board.d/01_leds b/target/linux/lantiq/base-files/etc/board.d/01_leds
index a95c72c..ac9e14e 100755
--- a/target/linux/lantiq/base-files/etc/board.d/01_leds
+++ b/target/linux/lantiq/base-files/etc/board.d/01_leds
@@ -27,39 +27,21 @@  board_config_update
 board=$(lantiq_board_name)
 
 case "$board" in
-BTHOMEHUBV2B)
-	ucidef_set_led_default "power" "power" "soc:blue:power" "1"
-	;;
-BTHOMEHUBV3A)
-	ucidef_set_led_default "power" "power" "soc:blue:power" "1"
-	;;
 BTHOMEHUBV5A)
-	ucidef_set_led_default "power" "power" "soc:blue:power" "1"
 	ucidef_set_led_default "dimmed" "dimmed" "dimmed" "0"
 	;;
 VGV7510KW22)
-	ucidef_set_led_default "power" "power" "power" "1"
-	ucidef_set_led_default "power2" "power2" "power2" "0"
 	ucidef_set_led_wlan "wifi" "wifi" "wifi" "phy0radio"
 	;;
 VGV7519)
-	ucidef_set_led_default "power" "power" "power" "0"
-	ucidef_set_led_default "power2" "power2" "power2" "1"
 	ucidef_set_led_wlan "wifi" "wifi" "wireless_yellow" "phy0radio"
 	;;
 P2812HNUF*)
-	ucidef_set_led_default "power" "power" "power" "0"
-	ucidef_set_led_default "power2" "power2" "power2" "1"
 	ucidef_set_led_wlan "wifi" "wifi" "wireless_green" "phy0radio"
 	;;
 ARV7519RW22)
-	ucidef_set_led_default "power" "power" "power" "1"
 	ucidef_set_led_netdev "lan" "lan" "lan" "eth0.1"
 	;;
-ARV8539PW22)
-        ucidef_set_led_default "power" "power" "soc:green:power" "1"
-        ucidef_set_led_default "power2" "power2" "soc:red:power" "0"
-        ;;
 *)
 	;;
 esac
diff --git a/target/linux/lantiq/base-files/etc/diag.sh b/target/linux/lantiq/base-files/etc/diag.sh
index 0e65e61..8356bcd 100644
--- a/target/linux/lantiq/base-files/etc/diag.sh
+++ b/target/linux/lantiq/base-files/etc/diag.sh
@@ -1,54 +1,34 @@ 
 #!/bin/sh
-# Copyright (C) 2012-2013 OpenWrt.org
+# Copyright (C) 2010-2015 OpenWrt.org
 
 . /lib/functions/leds.sh
 . /lib/functions/lantiq.sh
 
-power="$(lantiq_get_dt_led_chosen power)"
-power1="$(lantiq_get_dt_led_chosen power1)"
-power2="$(lantiq_get_dt_led_chosen power2)"
-
-status_led="$power"
+boot="$(lantiq_get_dt_led_chosen boot)"
+failsafe="$(lantiq_get_dt_led_chosen failsafe)"
+running="$(lantiq_get_dt_led_chosen running)"
 
 set_state() {
+    status_led="$boot"
+
 	case "$1" in
 	preinit)
-		if [ -n "$power2" ]; then
-			status_led_on
-			status_led="$power2"
-			status_led_blink_preinit
-			status_led="$power"
-		else
-			status_led_blink_preinit
-		fi
+		status_led_blink_preinit
 		;;
 	failsafe)
-		if [ -n "$power2" ]; then
-			led_off "$power2"
-			status_led_blink_failsafe
-		elif [ -n "$power1" ]; then
-			status_led_off
-			status_led="$power1"
-			status_led_blink_failsafe
-			status_led="$power"
-		else
-			status_led_blink_failsafe
-		fi
+		status_led_off
+		status_led="$failsafe"
+		status_led_blink_failsafe
 		;;
 	preinit_regular)
-		if [ -n "$power2" ]; then
-			status_led_on
-			status_led="$power2"
-			status_led_blink_preinit_regular
-			status_led="$power"
-		else
-			status_led_blink_preinit_regular
-		fi
+		status_led_blink_preinit_regular
 		;;
 	done)
-		status_led_on
-		led_off "$power1"
-		led_off "$power2"
+		status_led_off
+		[ -n "$running" ] & {
+			status_led="$running"
+			status_led_on
+		}
 		;;
 	esac
 }
diff --git a/target/linux/lantiq/dts/ARV4510PW.dts b/target/linux/lantiq/dts/ARV4510PW.dts
index 427cd54..18b2da8 100644
--- a/target/linux/lantiq/dts/ARV4510PW.dts
+++ b/target/linux/lantiq/dts/ARV4510PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &adsl;
 			internet = &internet;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			usb2 = &usb2;
 			wifi = &wifi;
@@ -152,6 +154,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpios 21 0>;
+			default-state = "keep";
 		};
 		power2: power2 {
 			label = "power2";
diff --git a/target/linux/lantiq/dts/ARV4518PWR01.dtsi b/target/linux/lantiq/dts/ARV4518PWR01.dtsi
index 41d17de..e72eb6d 100644
--- a/target/linux/lantiq/dts/ARV4518PWR01.dtsi
+++ b/target/linux/lantiq/dts/ARV4518PWR01.dtsi
@@ -5,9 +5,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -147,6 +150,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 3 0>;
+			default-state = "keep";
 		};
 		dsl: dsl {
 			label = "dsl";
diff --git a/target/linux/lantiq/dts/ARV4519PW.dts b/target/linux/lantiq/dts/ARV4519PW.dts
index 03711a0..be65337 100644
--- a/target/linux/lantiq/dts/ARV4519PW.dts
+++ b/target/linux/lantiq/dts/ARV4519PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -130,6 +132,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 2 1>;
+			default-state = "keep";
 		};
 		power2: power2 {
 			label = "power2";
diff --git a/target/linux/lantiq/dts/ARV4520PW.dts b/target/linux/lantiq/dts/ARV4520PW.dts
index 642bde2..d97009c 100644
--- a/target/linux/lantiq/dts/ARV4520PW.dts
+++ b/target/linux/lantiq/dts/ARV4520PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_blue;
+			failsafe = &power_red;
+			running = &power_blue;
+
 			dsl = &adsl;
 			internet = &internet;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -149,9 +151,10 @@ 
 	gpio-leds {
 		compatible = "gpio-leds";
 
-		power: power {
+		power_blue: power {
 			label = "power";
 			gpios = <&gpio 3 1>;
+			default-state = "keep";
 		};
 		adsl: adsl {
 			label = "adsl";
@@ -161,7 +164,7 @@ 
 			label = "internet";
 			gpios = <&gpio 5 1>;
 		};
-		power2: power2 {
+		power_red: power2 {
 			label = "power2";
 			gpios = <&gpio 6 1>;
 		};
diff --git a/target/linux/lantiq/dts/ARV4525PW.dts b/target/linux/lantiq/dts/ARV4525PW.dts
index b1a92a7..2fe3425 100644
--- a/target/linux/lantiq/dts/ARV4525PW.dts
+++ b/target/linux/lantiq/dts/ARV4525PW.dts
@@ -7,10 +7,12 @@ 
 
 	chosen {
 		leds {
+			/* we dont have a power led, lets use the online led */
+			boot = &online;
+			failsafe = &online;
+
 			dsl = &dsl;
 			internet = &online;
-			/* we dont have a power led, lets use the online led */
-			power = &online;
 			wifi = &wifi;
 		};
 	};
@@ -155,8 +157,7 @@ 
 			gpios = <&gpio 8 1>;
 		};
 		online: online {
-			/*label = "online"; - we dont have a power led, lets use this one */
-			label = "power";
+			label = "online";
 			gpios = <&gpio 9 1>;
 		};
 	};
diff --git a/target/linux/lantiq/dts/ARV452CQW.dts b/target/linux/lantiq/dts/ARV452CQW.dts
index 38618f1..1905a08 100644
--- a/target/linux/lantiq/dts/ARV452CQW.dts
+++ b/target/linux/lantiq/dts/ARV452CQW.dts
@@ -9,8 +9,11 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power0;
+			failsafe = &power1;
+			running = &power0;
+
 			internet = &dsl;
-			power1 = &power1;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -162,9 +165,10 @@ 
 
 	gpio-leds {
 		compatible = "gpio-leds";
-		power0 {
+		power0: power0 {
 			label = "power0";
 			gpios = <&gpio 3 1>;
+			default-state = "keep";
 		};
 		dsl: dsl {
 			label = "dsl";
diff --git a/target/linux/lantiq/dts/ARV7510PW22.dts b/target/linux/lantiq/dts/ARV7510PW22.dts
index 6c534a9..c92c393 100644
--- a/target/linux/lantiq/dts/ARV7510PW22.dts
+++ b/target/linux/lantiq/dts/ARV7510PW22.dts
@@ -9,8 +9,11 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power;
+			running = &power;
+
 			internet = &internet;
-			power = &power;
 			wifi = &wlan;
 		};
 	};
@@ -164,6 +167,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 2 1>;
+			default-state = "keep";
 		};
 		internet: internet {
 			label = "internet";
diff --git a/target/linux/lantiq/dts/ARV7518PW.dts b/target/linux/lantiq/dts/ARV7518PW.dts
index 7693bc2..31cc259 100644
--- a/target/linux/lantiq/dts/ARV7518PW.dts
+++ b/target/linux/lantiq/dts/ARV7518PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -170,6 +172,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 2 1>;
+			default-state = "keep";
 		};
 		dsl: dsl {
 			label = "dsl";
diff --git a/target/linux/lantiq/dts/ARV7519PW.dts b/target/linux/lantiq/dts/ARV7519PW.dts
index ed1c2e7..6daa8b1 100644
--- a/target/linux/lantiq/dts/ARV7519PW.dts
+++ b/target/linux/lantiq/dts/ARV7519PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
-			power2 = &power2;
 			wifi = &wifi;
 		};
 	};
@@ -147,7 +149,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 2 1>;
-			default-state = "off";
+			default-state = "keep";
 		};
 		power2: power2 {
 			label = "power2";
diff --git a/target/linux/lantiq/dts/ARV7519RW22.dts b/target/linux/lantiq/dts/ARV7519RW22.dts
index 8c7c3e6..872af54 100644
--- a/target/linux/lantiq/dts/ARV7519RW22.dts
+++ b/target/linux/lantiq/dts/ARV7519RW22.dts
@@ -3,14 +3,17 @@ 
 /include/ "vr9.dtsi"
 
 / {
-	model = "ARV7519RW22 - Astoria Networks ARV7519RW22-A-LT";
+	model = "ARV7519RW22 - Orange Livebox 2.1";
 
 	chosen {
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_green;
+			failsafe = &power_green;
+			running = &power_green;
+
 			internet = &internet_green;
-			power = &power_green;
 		};
 	};
 
@@ -213,7 +216,7 @@ 
 		power_green: power_green {
 			label = "power";
 			gpios = <&gpio 14 1>;
-			default-state = "on";
+			default-state = "keep";
 		};
 		alarm_blue {
 			label = "alarm";
diff --git a/target/linux/lantiq/dts/ARV7525PW.dts b/target/linux/lantiq/dts/ARV7525PW.dts
index d434556..922a2c8 100644
--- a/target/linux/lantiq/dts/ARV7525PW.dts
+++ b/target/linux/lantiq/dts/ARV7525PW.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power1;
+			running = &power;
+
 			dsl = &power;
 			internet = &online;
-			power = &power;
-			power1 = &power1;
 			wifi = &wifi;
 		};
 	};
@@ -125,6 +127,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 3 1>;
+			default-state = "keep";
 		};
 		power1: power1 {
 			label = "power1";
diff --git a/target/linux/lantiq/dts/ARV752DPW.dts b/target/linux/lantiq/dts/ARV752DPW.dts
index a26779a..d262ed1 100644
--- a/target/linux/lantiq/dts/ARV752DPW.dts
+++ b/target/linux/lantiq/dts/ARV752DPW.dts
@@ -9,9 +9,11 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power1;
+			running = &power;
+
 			internet = &internet;
-			power = &power;
-			power1 = &power1;
 			wifi = &wifi;
 		};
 	};
diff --git a/target/linux/lantiq/dts/ARV752DPW22.dts b/target/linux/lantiq/dts/ARV752DPW22.dts
index 21c7a8f..3635693 100644
--- a/target/linux/lantiq/dts/ARV752DPW22.dts
+++ b/target/linux/lantiq/dts/ARV752DPW22.dts
@@ -9,9 +9,11 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power1;
+			running = &power;
+
 			internet = &internet;
-			power = &power;
-			power1 = &power1;
 			wifi = &wifi;
 		};
 	};
diff --git a/target/linux/lantiq/dts/ARV8539PW22.dts b/target/linux/lantiq/dts/ARV8539PW22.dts
index b1f1b33..c78178b 100644
--- a/target/linux/lantiq/dts/ARV8539PW22.dts
+++ b/target/linux/lantiq/dts/ARV8539PW22.dts
@@ -7,9 +7,12 @@ 
 
 	    chosen {
 		    leds {
+                boot = &power_green;
+                failsafe = &power_red;
+                running = &power_green;
+
 			    dsl = &dsl_green;
 			    internet = &online_green;
-			    power = &power_green;
 			    wifi = &wireless_green;
 		    };
 	    };
@@ -146,8 +149,9 @@ 
                 power_green: power-green {
                         label = "power";
                         gpios = <&gpio 24 1>;
+                        default-state = "keep";
                 };
-                power-red {
+                power_red: power-red {
                         label = "soc:red:power";
                         gpios = <&gpio 4 1>;
                 };
diff --git a/target/linux/lantiq/dts/BTHOMEHUBV2B.dts b/target/linux/lantiq/dts/BTHOMEHUBV2B.dts
index f4c2403..292fe76 100644
--- a/target/linux/lantiq/dts/BTHOMEHUBV2B.dts
+++ b/target/linux/lantiq/dts/BTHOMEHUBV2B.dts
@@ -9,6 +9,10 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_orange;
+			failsafe = &power_red;
+			running = &power_blue;
+
 			internet = &broadband_blue;
 			wifi = &wireless_blue;
 		};
@@ -267,19 +271,19 @@ 
 			gpios = <&stp0 12 0>;
 		};
 
-		power-red {
+		power_red: power-red {
 			label = "soc:red:power";
 			gpios = <&stp0 13 0>;
 		};
-		power-orange {
+		power_orange: power-orange {
 			label = "soc:orange:power";
 			gpios = <&stp0 14 0>;
+			default-state = "keep";
 		};
-		power-blue {
+		power_blue: power-blue {
 			label = "soc:blue:power";
 			gpios = <&stp0 15 0>;
 		};
 	};
-
 };
 
diff --git a/target/linux/lantiq/dts/BTHOMEHUBV3A.dts b/target/linux/lantiq/dts/BTHOMEHUBV3A.dts
index 229a85f..2c88f49 100644
--- a/target/linux/lantiq/dts/BTHOMEHUBV3A.dts
+++ b/target/linux/lantiq/dts/BTHOMEHUBV3A.dts
@@ -9,6 +9,10 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_orange;
+			failsafe = &power_red;
+			running = &power_blue;
+
 			internet = &broadband_blue;
 			wifi = &wireless_blue;
 		};
@@ -197,19 +201,19 @@ 
 			gpios = <&gpio 12 1>;
 		};
 
-		power-red {
+		power_red: power-red {
 			label = "soc:red:power";
 			gpios = <&gpio 14 1>;
 		};
-		power-orange {
+		power_orange: power-orange {
 			label = "soc:orange:power";
 			gpios = <&gpio 5 1>;
+			default-state = "keep";
 		};
-		ppower-blue {
+		power_blue: power-blue {
 			label = "soc:blue:power";
 			gpios = <&gpio 1 1>;
 		};
 	};
-
 };
 
diff --git a/target/linux/lantiq/dts/BTHOMEHUBV5A.dts b/target/linux/lantiq/dts/BTHOMEHUBV5A.dts
index 4141573..6d40ccd 100644
--- a/target/linux/lantiq/dts/BTHOMEHUBV5A.dts
+++ b/target/linux/lantiq/dts/BTHOMEHUBV5A.dts
@@ -9,6 +9,10 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_green;
+			failsafe = &power_red;
+			running = &power_blue;
+
 			internet = &broadband_blue;
 			wifi = &wireless_blue;
 		};
@@ -245,6 +249,7 @@ 
 	gpio-leds {
 		compatible = "gpio-leds";
 
+		/* broadband-* is a single RGB led */
 		broadband-red {
 			label = "soc:red:broadband";
 			gpios = <&gpio 0 1>;
@@ -258,6 +263,7 @@ 
 			gpios = <&gpio 8 1>;
 		};
 
+		/* wireless-* is a single RGB led */
 		wireless-red {
 			label = "soc:red:wireless";
 			gpios = <&gpio 9 1>;
@@ -271,15 +277,17 @@ 
 			gpios = <&gpio 11 1>;
 		};
 
-		power-red {
+		/* power-* is a single RGB led */
+		power_red: power-red {
 			label = "soc:red:power";
 			gpios = <&gpio 12 1>;
 		};
-		power-green {
+		power_green: power-green {
 			label = "soc:green:power";
 			gpios = <&gpio 14 1>;
+			default-state = "keep";
 		};
-		power-blue {
+		power_blue: power-blue {
 			label = "soc:blue:power";
 			gpios = <&gpio 15 1>;
 		};
diff --git a/target/linux/lantiq/dts/DGN1000B.dts b/target/linux/lantiq/dts/DGN1000B.dts
index d5d7b98..7c4f4a5 100644
--- a/target/linux/lantiq/dts/DGN1000B.dts
+++ b/target/linux/lantiq/dts/DGN1000B.dts
@@ -9,9 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
 		};
 	};
 
@@ -137,7 +140,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 13 1>;
-			default-state = "on";
+			default-state = "keep";
 		};
 	};
 };
diff --git a/target/linux/lantiq/dts/DGN3500.dtsi b/target/linux/lantiq/dts/DGN3500.dtsi
index d8ae431..b9459c5 100644
--- a/target/linux/lantiq/dts/DGN3500.dtsi
+++ b/target/linux/lantiq/dts/DGN3500.dtsi
@@ -5,10 +5,12 @@ 
 		bootargs-append = "root= console=ttyLTQ0,115200";
 
 		leds {
+			boot = &power_green;
+			failsafe = &power_red;
+			running = &power_green;
+
 			dsl = &dsl;
 			internet = &internet;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -171,11 +173,12 @@ 
 			label = "usb";
 			gpios = <&gpio 22 1>;
 		};
-		power: power {
+		power_green: power {
 			label = "power";
 			gpios = <&gpio 34 1>;
+			default-state = "keep";
 		};
-		power2: power2 {
+		power_red: power2 {
 			label = "power2";
 			gpios = <&gpio 39 1>;
 		};
diff --git a/target/linux/lantiq/dts/EASY80920.dtsi b/target/linux/lantiq/dts/EASY80920.dtsi
index bdd7596..14a020f 100644
--- a/target/linux/lantiq/dts/EASY80920.dtsi
+++ b/target/linux/lantiq/dts/EASY80920.dtsi
@@ -5,7 +5,10 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
-			power = &power;
+			boot = &power;
+			failsafe = &power;
+			running = &power;
+
 			usb = &usb1;
 			usb2 = &usb2;
 		};
@@ -302,7 +305,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&stp 9 0>;
-			default-state = "on";
+			default-state = "keep";
 		};
 		warning {
 			label = "warning";
diff --git a/target/linux/lantiq/dts/FRITZ3370.dts b/target/linux/lantiq/dts/FRITZ3370.dts
index a652b9b..216f5ff 100644
--- a/target/linux/lantiq/dts/FRITZ3370.dts
+++ b/target/linux/lantiq/dts/FRITZ3370.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 ubi.mtd=1,512 root=/dev/mtdblock9";
 
 		leds {
+			boot = &power_green;
+			failsafe = &power_red;
+			running = &power_green;
+
 			dsl = &dsl;
 			internet = &info_green;
-			power = &power;
-			power2 = &power2;
 			wifi = &wifi;
 		};
 	};
@@ -243,11 +245,12 @@ 
 	gpio-leds {
 		compatible = "gpio-leds";
 
-		power: power {
+		power_green: power {
 			label = "power";
 			gpios = <&gpio 32 1>;
+			default-state = "keep";
 		};
-		power2: power2 {
+		power_red: power2 {
 			label = "power2";
 			gpios = <&gpio 33 1>;
 		};
diff --git a/target/linux/lantiq/dts/FRITZ7320.dts b/target/linux/lantiq/dts/FRITZ7320.dts
index b5aa5e8..0a307b9 100644
--- a/target/linux/lantiq/dts/FRITZ7320.dts
+++ b/target/linux/lantiq/dts/FRITZ7320.dts
@@ -9,9 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power;
+			running = &power;
+
 			dsl = &power;
 			internet = &online;
-			power = &power;
 			wifi = &wlan;
 		};
 	};
@@ -120,6 +123,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 44 1>;
+			default-state = "keep";
 		};
 		voice {
 			label = "voice";
diff --git a/target/linux/lantiq/dts/GR7000.dts b/target/linux/lantiq/dts/GR7000.dts
index 9f3ba65..b6c2c0b 100644
--- a/target/linux/lantiq/dts/GR7000.dts
+++ b/target/linux/lantiq/dts/GR7000.dts
@@ -9,8 +9,10 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_red;
+			failsafe = &power_red;
+
 			internet = &internet;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -117,14 +119,13 @@ 
 	gpio-leds {
 		compatible = "gpio-leds";
 
-		power2: power2 {
+		power_red: power2 {
 			label = "power2";
 			gpios = <&stp 4 0>;
 		};
 		internet: internet {
 			label = "internet";
 			gpios = <&stp 2 1>;
-			default-state = "off";
 		};
 		internet2 {
 			label = "internet2";
diff --git a/target/linux/lantiq/dts/H201L.dts b/target/linux/lantiq/dts/H201L.dts
index 1f1de01..e4da1e5 100644
--- a/target/linux/lantiq/dts/H201L.dts
+++ b/target/linux/lantiq/dts/H201L.dts
@@ -9,9 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power_green;
+			failsafe = &power_green;
+			running = &power_green;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -93,10 +96,10 @@ 
 	gpio-leds {
 		compatible = "gpio-leds";
 
-		power: power {
+		power_green: power {
 			label = "power";
 			gpios = <&gpio 19 1>;
-			default-state = "on";
+			default-state = "keep";
 		};
 		online: online {
 			label = "online";
diff --git a/target/linux/lantiq/dts/P2601HNFX.dts b/target/linux/lantiq/dts/P2601HNFX.dts
index 3193c39..58e61d1 100644
--- a/target/linux/lantiq/dts/P2601HNFX.dts
+++ b/target/linux/lantiq/dts/P2601HNFX.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
-			power2 = &power2;
 			wifi = &wifi;
 		};
 	};
@@ -146,7 +148,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&stp 11 1>;
-			default-state = "on";
+			default-state = "keep";
 		};
 		power2: power2 {
 			label = "power2";
diff --git a/target/linux/lantiq/dts/P2812HNUFX.dtsi b/target/linux/lantiq/dts/P2812HNUFX.dtsi
index a03129f..7199d9a 100644
--- a/target/linux/lantiq/dts/P2812HNUFX.dtsi
+++ b/target/linux/lantiq/dts/P2812HNUFX.dtsi
@@ -5,10 +5,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power2;
+			failsafe = &power;
+			running = &power2;
+
 			dsl = &dsl;
 			internet = &internet_green;
-			power = &power;
-			power2 = &power2;
 			usb = &usb1;
 			usb2 = &usb2;
 			wifi = &wireless_green;
@@ -304,6 +306,7 @@ 
 		power2: power2 {				/* green */
 			label = "power2";
 			gpios = <&stp 23 1>;
+			default-state = "keep";
 		};
 		usb1: usb1 {					/* green */
 			label = "usb1";
diff --git a/target/linux/lantiq/dts/TDW89X0.dtsi b/target/linux/lantiq/dts/TDW89X0.dtsi
index 3d9e59e..04bb5a4 100644
--- a/target/linux/lantiq/dts/TDW89X0.dtsi
+++ b/target/linux/lantiq/dts/TDW89X0.dtsi
@@ -5,10 +5,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			/* the power led can't be controlled, use the wps led instead */
+			boot = &wps;
+			failsafe = &wps;
+
 			dsl = &dsl;
 			internet = &internet;
-			/* the power led can't be controlled, use the wps led instead */
-			power = &wps;
 			usb = &usb0;
 			usb2 = &usb2;
 		};
diff --git a/target/linux/lantiq/dts/VG3503J.dtsi b/target/linux/lantiq/dts/VG3503J.dtsi
index e567923..fe192a3 100644
--- a/target/linux/lantiq/dts/VG3503J.dtsi
+++ b/target/linux/lantiq/dts/VG3503J.dtsi
@@ -7,9 +7,11 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			internet = &dsl;
-			power = &power;
-			power2 = &power2;
 		};
 	};
 
@@ -165,6 +167,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 28 1>;
+			default-state = "keep";
 		};
 	};
 };
diff --git a/target/linux/lantiq/dts/VGV7510KW22.dtsi b/target/linux/lantiq/dts/VGV7510KW22.dtsi
index 3cc2e1d..dc2738a 100644
--- a/target/linux/lantiq/dts/VGV7510KW22.dtsi
+++ b/target/linux/lantiq/dts/VGV7510KW22.dtsi
@@ -7,10 +7,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &internet_green;
-			power = &power;
-			power2 = &power2;
 			wifi = &wifi;
 		};
 	};
@@ -234,6 +236,7 @@ 
 		power: power {
 			label = "power"; /* green */
 			gpios = <&gpio 14 1>;
+			default-state = "keep";
 		};
 
 		info_green {
diff --git a/target/linux/lantiq/dts/VGV7519.dtsi b/target/linux/lantiq/dts/VGV7519.dtsi
index 3ba3ac5..71b7d26 100644
--- a/target/linux/lantiq/dts/VGV7519.dtsi
+++ b/target/linux/lantiq/dts/VGV7519.dtsi
@@ -8,10 +8,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power2;
+			failsafe = &power;
+			running = &power2;
+
 			dsl = &broadband_yellow;
 			internet = &internet_yellow;
-			power = &power;
-			power2 = &power2;
 			wifi = &wireless_yellow;
 		};
 	};
@@ -318,11 +320,11 @@ 
 		power2: power2 {				/* yellow */
 			label = "power2";
 			gpios = <&stp 14 1>;
+			default-state = "keep";
 		};
 		power: power {					/* red */
 			label = "power";
 			gpios = <&stp 15 1>;
-			default-state = "on";
 		};
 	};
 };
diff --git a/target/linux/lantiq/dts/WBMR.dts b/target/linux/lantiq/dts/WBMR.dts
index dc23032..1ca7668 100644
--- a/target/linux/lantiq/dts/WBMR.dts
+++ b/target/linux/lantiq/dts/WBMR.dts
@@ -9,10 +9,12 @@ 
 		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
 
 		leds {
+			boot = &power;
+			failsafe = &power2;
+			running = &power;
+
 			dsl = &dsl;
 			internet = &online;
-			power = &power;
-			power2 = &power2;
 			usb = &usb;
 			wifi = &wifi;
 		};
@@ -139,6 +141,7 @@ 
 		power: power {
 			label = "power";
 			gpios = <&gpio 1 1>;
+			default-state = "keep";
 		};
 		power2: power2 {
 			label = "power2";