mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
HID: wacom: Initialize brightness of LED trigger
If an LED has a default_trigger set prior to being registered with
the subsystem, that trigger will be executed with a brightness value
defined by `trigger->brightness`. Our driver was not setting this
value, which was causing problems. It would cause the selected LED
to be turned off, as well as corrupt the hlv/llv values assigned to
other LEDs (since calling `wacom_led_brightness_set` will overite
these values).
This patch sets the value of `trigger->brightness` to an appropriate
value. We use `wacom_leds_brightness_get` to transform the llv/hlv
values into a brightness that is understood by the rest of the LED
subsystem.
Fixes: 822c91e72e ("leds: trigger: Store brightness set by led_trigger_event()")
Cc: stable@vger.kernel.org # v6.10+
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
8d355b56f2
commit
88006b8eca
|
|
@ -1370,17 +1370,6 @@ static int wacom_led_register_one(struct device *dev, struct wacom *wacom,
|
|||
if (!name)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!read_only) {
|
||||
led->trigger.name = name;
|
||||
error = devm_led_trigger_register(dev, &led->trigger);
|
||||
if (error) {
|
||||
hid_err(wacom->hdev,
|
||||
"failed to register LED trigger %s: %d\n",
|
||||
led->cdev.name, error);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
led->group = group;
|
||||
led->id = id;
|
||||
led->wacom = wacom;
|
||||
|
|
@ -1397,6 +1386,19 @@ static int wacom_led_register_one(struct device *dev, struct wacom *wacom,
|
|||
led->cdev.brightness_set = wacom_led_readonly_brightness_set;
|
||||
}
|
||||
|
||||
if (!read_only) {
|
||||
led->trigger.name = name;
|
||||
if (id == wacom->led.groups[group].select)
|
||||
led->trigger.brightness = wacom_leds_brightness_get(led);
|
||||
error = devm_led_trigger_register(dev, &led->trigger);
|
||||
if (error) {
|
||||
hid_err(wacom->hdev,
|
||||
"failed to register LED trigger %s: %d\n",
|
||||
led->cdev.name, error);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
error = devm_led_classdev_register(dev, &led->cdev);
|
||||
if (error) {
|
||||
hid_err(wacom->hdev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user