diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 960bf2f901d2..d3f65fa67ebd 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c @@ -56,6 +56,7 @@ static ssize_t brightness_store(struct device *dev, if (state == LED_OFF) led_trigger_remove(led_cdev); led_set_brightness(led_cdev, state); + led_cdev->usr_brightness_req = state; ret = size; unlock: @@ -84,7 +85,7 @@ static ssize_t max_brightness_store(struct device *dev, return ret; led_cdev->max_brightness = state; - led_set_brightness(led_cdev, led_cdev->brightness); + led_set_brightness(led_cdev, led_cdev->usr_brightness_req); return size; } diff --git a/include/linux/leds.h b/include/linux/leds.h index fa359c79c825..bba189a62dfd 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -35,6 +35,7 @@ struct led_classdev { const char *name; enum led_brightness brightness; enum led_brightness max_brightness; + enum led_brightness usr_brightness_req; int flags; /* Lower 16 bits reflect status */