]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
leds: multicolor: Fix intensity setting while SW blinking
authorSven Schwermer <sven.schwermer@disruptive-technologies.com>
Fri, 4 Apr 2025 18:40:36 +0000 (20:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:27:36 +0000 (18:27 +0200)
[ Upstream commit e35ca991a777ef513040cbb36bc8245a031a2633 ]

When writing to the multi_intensity file, don't unconditionally call
led_set_brightness. By only doing this if blinking is inactive we
prevent blinking from stopping if the blinking is in its off phase while
the file is written.

Instead, if blinking is active, the changed intensity values are applied
upon the next blink. This is consistent with changing the brightness on
monochrome LEDs with active blinking.

Suggested-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Tobias Deiminger <tobias.deiminger@linutronix.de>
Tested-by: Sven Schuchmann <schuchmann@schleissheimer.de>
Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
Link: https://lore.kernel.org/r/20250404184043.227116-1-sven@svenschwermer.de
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/leds/led-class-multicolor.c

index e317408583df9f829f5d6f9544943971c31fdce4..5b1479b5d32ca1448e0a265adeafe57846100e51 100644 (file)
@@ -59,7 +59,8 @@ static ssize_t multi_intensity_store(struct device *dev,
        for (i = 0; i < mcled_cdev->num_colors; i++)
                mcled_cdev->subled_info[i].intensity = intensity_value[i];
 
-       led_set_brightness(led_cdev, led_cdev->brightness);
+       if (!test_bit(LED_BLINK_SW, &led_cdev->work_flags))
+               led_set_brightness(led_cdev, led_cdev->brightness);
        ret = size;
 err_out:
        mutex_unlock(&led_cdev->led_access);