ipq40xx: Lyra: update RGB LED-Controller node for 5.10+
authorChristian Lamparter <chunkeey@gmail.com>
Sat, 7 May 2022 17:41:55 +0000 (19:41 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 14 May 2022 09:08:45 +0000 (11:08 +0200)
Add the reg and color property to each channel node. This
update is to accommodate the multicolor framework.

Refer to:
<https://lore.kernel.org/all/20200622185919.2131-9-dmurphy@ti.com>
<https://lore.kernel.org/all/20210818070209.1540451-1-michal.vokac@ysoft.com>

Note:

There is only a single extremely bright RGB-LED.
The RGB-color channels (i.e.: blue-0, blue-1 and blue-2)
are running in parallel to increase the current delivery
beyond what a single PWM-output on the LED controller
could do.

BugLink: https://github.com/openwrt/openwrt/issues/9851
Reported-By: Thomas Bøge <thomas@boegenielsen.dk>
Tested-By: Thomas Bøge <thomas@boegenielsen.dk>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
target/linux/ipq40xx/base-files/etc/uci-defaults/04_led_migration
target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts

index ef4d3d037c95386ed05cb06481c5f510b07a0514..e8818a41ed7abef9a51a07571ca18e82cd7c3bd3 100644 (file)
@@ -3,6 +3,9 @@
 board=$(board_name)
 
 case "$board" in
+asus,map-ac2200)
+       migrate_leds ':chan=-'
+       ;;
 engenius,emr3500)
        migrate_leds "emr3500:="
        ;;
index 3b9078bc08709911c00abdcee25375789d1d0564..433048dd4bc61d216a89a12801dffeeb9ab4d59b 100644 (file)
@@ -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 Lyra MAP-AC2200";
                /* 9-channel RGB LED controller */
                compatible = "national,lp5523";
                reg = <0x32>;
-               clock-mode = [01];
-
-               led_blue0: blue0 {
-                       chan-name = "blue0";
-                       label = "blue:chan0";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               clock-mode = /bits/ 8 <1>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /*
+                * There is only one single extremely bright RGB-LED.
+                * The RGB-color channels are running in parallel to
+                * increase the current delivery capabilities beyond
+                * what a single PWM-output of the controller can do.
+                */
+
+               led_blue0: led@0 {
+                       chan-name = "blue-0";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <0>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function-enumerator = <0>;
                };
 
-               blue1 {
-                       chan-name = "blue1";
-                       label = "blue:chan1";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@1 {
+                       chan-name = "blue-1";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <1>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function-enumerator = <1>;
                };
 
-               blue2 {
-                       chan-name = "blue2";
-                       label = "blue:chan2";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@2 {
+                       chan-name = "blue-2";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <2>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function-enumerator = <2>;
                };
 
-               led_green0: green0 {
-                       chan-name = "green0";
-                       label = "green:chan0";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led_green0: led@3 {
+                       chan-name = "green-0";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <3>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function-enumerator = <0>;
                };
 
-               green1 {
-                       chan-name = "green1";
-                       label = "green:chan1";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@4 {
+                       chan-name = "green-1";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <4>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function-enumerator = <1>;
                };
 
-               green2 {
-                       chan-name = "green2";
-                       label = "green:chan2";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@5 {
+                       chan-name = "green-2";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <5>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       function-enumerator = <2>;
                };
 
-               led_red0: red0 {
-                       chan-name = "red0";
-                       label = "red:chan0";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led_red0: led@6 {
+                       chan-name = "red-0";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <6>;
+                       color = <LED_COLOR_ID_RED>;
+                       function-enumerator = <0>;
                };
 
-               red1 {
-                       chan-name = "red1";
-                       label = "red:chan1";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@7 {
+                       chan-name = "red-1";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <7>;
+                       color = <LED_COLOR_ID_RED>;
+                       function-enumerator = <1>;
                };
 
-               red2 {
-                       chan-name = "red2";
-                       label = "red:chan2";
-                       led-cur = [fa];
-                       max-cur = [ff];
+               led@8 {
+                       chan-name = "red-2";
+                       led-cur = /bits/ 8 <0xfa>;
+                       max-cur = /bits/ 8 <0xff>;
+                       reg = <8>;
+                       color = <LED_COLOR_ID_RED>;
+                       function-enumerator = <2>;
                };
        };
 };