From 3f442c1eb9eac9f91f96b2833eb5e3a8c57f7442 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey@gmail.com>
Date: Fri, 1 Dec 2023 21:38:40 +0100
Subject: [PATCH] ipq40xx: update ASUS RT-AC58U leds DTS nodes

 - use color, function, function-enumerator properties.
 - removes the label properties from LED nodes.
 - add panic-indicator to the blue power/status LED.

Note: yes this brings the combined LAN/"switch" LED sort of back,
though I fully admit, it's a bit jank. Do you know a better option?
then please tell/make a PR!

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
---
 .../ipq40xx/base-files/etc/board.d/01_leds    |  4 +-
 .../etc/uci-defaults/04_led_migration         |  3 ++
 .../arm/boot/dts/qcom-ipq4018-rt-ac58u.dts    | 38 +++++++++++++------
 3 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
index 1ba5d2b1a7..187bafccb9 100644
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
@@ -20,8 +20,8 @@ asus,rt-ac42u)
 	ucidef_set_led_netdev "wan" "WAN" "blue:wan" "wan"
 	;;
 asus,rt-ac58u)
-	ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth1"
-	ucidef_set_led_switch "lan" "LAN" "blue:lan" "switch0" "0x1e"
+	ucidef_set_led_netdev "wan" "WAN" "blue:wan" "wan"
+	ucidef_set_led_netdev "lan" "LAN" "blue:lan" "br-lan"
 	;;
 avm,fritzbox-4040)
 	ucidef_set_led_wlan "wlan" "WLAN" "green:wlan" "phy0tpt" "phy1tpt"
diff --git a/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration b/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration
index e8818a41ed..a8e3cfb865 100644
--- a/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration
+++ b/target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration
@@ -6,6 +6,9 @@ case "$board" in
 asus,map-ac2200)
 	migrate_leds ':chan=-'
 	;;
+asus,rt-ac58u)
+	migrate_leds ":status=:power" ":wlan2G=:wlan-2" ":wlan5G=:wlan-5"
+	;;
 engenius,emr3500)
 	migrate_leds "emr3500:="
 	;;
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rt-ac58u.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rt-ac58u.dts
index 87705e5f60..38158fbfa7 100644
--- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rt-ac58u.dts
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rt-ac58u.dts
@@ -4,6 +4,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/soc/qcom,tcsr.h>
+#include <dt-bindings/leds/common.h>
 
 / {
 	model = "ASUS RT-AC58U";
@@ -101,37 +102,50 @@
 	leds {
 		compatible = "gpio-leds";
 
-		led_power: status {
-			label = "blue:status";
+		led_power: led-0 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_POWER;
 			gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
+			panic-indicator;
 		};
 
-		wan {
-			label = "blue:wan";
+		led-1 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WAN;
 			gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>;
+			/*
+			 * linux,default-trigger = "90000.mdio-1:04:link";
+			 * sadly still lacks rx+tx
+			 */
 		};
 
-		wlan2G {
-			label = "blue:wlan2G";
+		led-2 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <2>;
 			gpios = <&tlmm 58 GPIO_ACTIVE_HIGH>;
 			linux,default-trigger = "phy0tpt";
 		};
 
-		wlan5G {
-			label = "blue:wlan5G";
+		led-3 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_WLAN;
+			function-enumerator = <5>;
 			gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
 			linux,default-trigger = "phy1tpt";
 		};
 
-		usb {
-			label = "blue:usb";
+		led-4 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_USB;
 			gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
 			trigger-sources = <&usb3_port1>, <&usb3_port2>;
 			linux,default-trigger = "usbport";
 		};
 
-		lan {
-			label = "blue:lan";
+		led-5 {
+			color = <LED_COLOR_ID_BLUE>;
+			function = LED_FUNCTION_LAN;
 			gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>;
 		};
 	};
-- 
2.30.2