Merge "leds: led-class: Retain the latest user brightness request"

This commit is contained in:
qctecmdr 2021-06-15 02:59:04 -07:00 committed by Gerrit - the friendly Code Review server
commit 1f60a15384
2 changed files with 20 additions and 1 deletions

View File

@ -57,6 +57,7 @@ static ssize_t brightness_store(struct device *dev,
if (state == LED_OFF && !(led_cdev->flags & LED_KEEP_TRIGGER))
led_trigger_remove(led_cdev);
led_set_brightness(led_cdev, state);
led_cdev->usr_brightness_req = state;
ret = size;
unlock:
@ -72,7 +73,24 @@ static ssize_t max_brightness_show(struct device *dev,
return sprintf(buf, "%u\n", led_cdev->max_brightness);
}
static DEVICE_ATTR_RO(max_brightness);
static ssize_t max_brightness_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t size)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
unsigned long state;
ssize_t ret = -EINVAL;
ret = kstrtoul(buf, 10, &state);
if (ret)
return ret;
led_cdev->max_brightness = state;
led_set_brightness(led_cdev, led_cdev->usr_brightness_req);
return size;
}
static DEVICE_ATTR_RW(max_brightness);
#ifdef CONFIG_LEDS_TRIGGERS
static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store);

View File

@ -37,6 +37,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 */