mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 21:23:23 +00: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: 822c91e72eac ("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…
x
Reference in New Issue
Block a user