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>
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;
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);
}