X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=drivers%2Fleds%2Fled-core.c;h=ce8921a753a32107b30915f8c2ae2b837310d33d;hb=939ecf6b14c46e3448411a934418311b492bfee4;hp=2ab05af3de31ab188fb0300befb04a708702637f;hpb=637e49ae4f5b4a82b418dae8435e16132b298b7e;p=karo-tx-linux.git diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c index 2ab05af3de31..ce8921a753a3 100644 --- a/drivers/leds/led-core.c +++ b/drivers/leds/led-core.c @@ -103,13 +103,23 @@ void led_blink_set_oneshot(struct led_classdev *led_cdev, } EXPORT_SYMBOL(led_blink_set_oneshot); -void led_set_brightness(struct led_classdev *led_cdev, - enum led_brightness brightness) +void led_stop_software_blink(struct led_classdev *led_cdev) { - /* stop and clear soft-blink timer */ del_timer_sync(&led_cdev->blink_timer); led_cdev->blink_delay_on = 0; led_cdev->blink_delay_off = 0; +} +EXPORT_SYMBOL_GPL(led_stop_software_blink); + +void led_set_brightness(struct led_classdev *led_cdev, + enum led_brightness brightness) +{ + /* delay brightness setting if need to stop soft-blink timer */ + if (led_cdev->blink_delay_on || led_cdev->blink_delay_off) { + led_cdev->delayed_set_value = brightness; + schedule_work(&led_cdev->set_brightness_work); + return; + } __led_set_brightness(led_cdev, brightness); }