]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
kernel: ar8327: fix active-low LED initialization
authorLech Perczak <lech.perczak@gmail.com>
Tue, 4 Feb 2025 20:14:45 +0000 (21:14 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 17 Mar 2025 15:40:46 +0000 (16:40 +0100)
Switch LEDs configured as active-low remain low instead of high upon
initialization, because in ar8327_leds_init, no distinction is made with
regards to LED pattern based on active_low property - only whether HW
mode is active. Select the proper initial pattern based also on
active_low to fix that.

While at that, simplify the equation ruling pattern selection for
setting brightness, avoiding unnecessary binary XOR operation, not
really valid for 'bool' type.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/12487
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/generic/files/drivers/net/phy/ar8327.c

index 33131495598084e122582493e977c4585dea7c1c..83191cd5917f12feeaf8b7cc8e9b86dd1089947a 100644 (file)
@@ -326,8 +326,7 @@ ar8327_led_set_brightness(struct led_classdev *led_cdev,
        u8 pattern;
        bool active;
 
-       active = (brightness != LED_OFF);
-       active ^= aled->active_low;
+       active = (brightness != LED_OFF) != aled->active_low;
 
        pattern = (active) ? AR8327_LED_PATTERN_ON :
                             AR8327_LED_PATTERN_OFF;
@@ -501,7 +500,8 @@ ar8327_leds_init(struct ar8xxx_priv *priv)
                if (aled->enable_hw_mode)
                        aled->pattern = AR8327_LED_PATTERN_RULE;
                else
-                       aled->pattern = AR8327_LED_PATTERN_OFF;
+                       aled->pattern = aled->active_low ?
+                               AR8327_LED_PATTERN_ON : AR8327_LED_PATTERN_OFF;
 
                ar8327_set_led_pattern(priv, aled->led_num, aled->pattern);
        }