From 5a4f8b26f0185f392bfb0e5f31acdebcf4a10334 Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Tue, 4 Feb 2025 21:14:45 +0100 Subject: [PATCH] kernel: ar8327: fix active-low LED initialization 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 Link: https://github.com/openwrt/openwrt/pull/12487 Signed-off-by: Hauke Mehrtens --- target/linux/generic/files/drivers/net/phy/ar8327.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.c b/target/linux/generic/files/drivers/net/phy/ar8327.c index 3313149559..83191cd591 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8327.c +++ b/target/linux/generic/files/drivers/net/phy/ar8327.c @@ -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); }