linux-brain/drivers/leds
Hans de Goede ebf570042b leds: trigger: audio: Add an activate callback to ensure the initial brightness is set
[ Upstream commit 64f67b5240db79eceb0bd57dae8e591fd3103ba0 ]

Some 2-in-1s with a detachable (USB) keyboard(dock) have mute-LEDs in
the speaker- and/or mic-mute keys on the keyboard.

Examples of this are the Lenovo Thinkpad10 tablet (with its USB kbd-dock)
and the HP x2 10 series.

The detachable nature of these keyboards means that the keyboard and
thus the mute LEDs may show up after the user (or userspace restoring
old mixer settings) has muted the speaker and/or mic.

Current LED-class devices with a default_trigger of "audio-mute" or
"audio-micmute" initialize the brightness member of led_classdev with
ledtrig_audio_get() before registering the LED.

This makes the software state after attaching the keyboard match the
actual audio mute state, e.g. cat /sys/class/leds/foo/brightness will
show the right value.

But before this commit nothing was actually calling the led_classdev's
brightness_set[_blocking] callback so the value returned by
ledtrig_audio_get() was never actually being sent to the hw, leading
to the mute LEDs staying in their default power-on state, after
attaching the keyboard, even if ledtrig_audio_get() returned a different
state.

This could be fixed by having the individual LED drivers call
brightness_set[_blocking] themselves after registering the LED,
but this really is something which should be done by a led-trigger
activate callback.

Add an activate callback for this, fixing the issue of the
mute LEDs being out of sync after (re)attaching the keyboard.

Cc: Takashi Iwai <tiwai@suse.de>
Fixes: faa2541f5b ("leds: trigger: Introduce audio mute LED trigger")
Reviewed-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-15 09:47:33 +02:00
..
trigger leds: trigger: audio: Add an activate callback to ensure the initial brightness is set 2021-09-15 09:47:33 +02:00
Kconfig leds: lm3532: select regmap I2C API 2021-07-14 16:53:41 +02:00
Makefile TI LMU LED support rework and introduction of two new drivers 2019-06-11 23:46:37 +02:00
led-class-flash.c leds: class: Improve LED and LED flash class registration API 2019-07-25 20:07:50 +02:00
led-class.c leds: core: Flush scheduled work for system suspend 2020-08-19 08:16:11 +02:00
led-core.c leds: Switch to use fwnode instead of be stuck with OF one 2019-08-23 23:39:37 +02:00
led-triggers.c leds: trigger: fix potential deadlock with libata 2021-02-03 23:25:58 +01:00
leds-88pm860x.c leds: 88pm860x: fix use-after-free on unbind 2020-08-11 15:33:36 +02:00
leds-aat1290.c leds: aat1290: Use generic support for composing LED names 2019-07-25 20:07:59 +02:00
leds-adp5520.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
leds-an30259a.c leds: an30259a: add a check for devm_regmap_init_i2c 2020-01-04 19:17:03 +01:00
leds-apu.c leds: apu: add pr_fmt prefix for better log output 2019-07-22 21:57:35 +02:00
leds-as3645a.c leds: as3645a: Fix error return code in as3645a_parse_node() 2021-07-14 16:53:46 +02:00
leds-asic3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-bcm6328.c leds: bcm6328, bcm6358: use devres LED registering function 2020-11-05 11:43:24 +01:00
leds-bcm6358.c leds: bcm6328, bcm6358: use devres LED registering function 2020-11-05 11:43:24 +01:00
leds-bd2802.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-blinkm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
leds-clevo-mail.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-cobalt-qube.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-cobalt-raq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
leds-cpcap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 89 2019-05-24 17:37:52 +02:00
leds-cr0014114.c leds: cr0014114: Use generic support for composing LED names 2019-07-25 20:07:58 +02:00
leds-da903x.c leds: da903x: fix use-after-free on unbind 2020-08-11 15:33:36 +02:00
leds-da9052.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-dac124s085.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330 2019-06-05 17:37:06 +02:00
leds-fsg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-gpio-register.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-gpio.c leds: gpio: Fix uninitialized gpio label for fwnode based probe 2020-01-29 16:45:29 +01:00
leds-hp6xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-ipaq-micro.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-is31fl32xx.c leds: is31fl32xx: Use struct_size() helper 2019-09-01 13:33:29 +02:00
leds-is31fl319x.c leds: is31fl319x: simplify getting the adapter of a client 2019-07-23 20:47:45 +02:00
leds-ktd2692.c leds: ktd2692: Fix an error handling path 2021-07-14 16:53:47 +02:00
leds-lm355x.c leds: lm355x: avoid enum conversion warning 2020-08-19 08:16:07 +02:00
leds-lm3530.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07:00
leds-lm3532.c leds: lm3532: Fix optional led-max-microamp prop error handling 2019-09-12 20:45:52 +02:00
leds-lm3533.c leds: lm3533: fix use-after-free on unbind 2020-08-11 15:33:36 +02:00
leds-lm3601x.c leds: lm3601x: Use generic support for composing LED names 2019-07-25 20:07:57 +02:00
leds-lm3642.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lm3692x.c leds: lm3692x: Put fwnode in any case during ->probe() 2021-07-14 16:53:41 +02:00
leds-lm3697.c leds: lm3697: Switch to use fwnode_property_count_uXX() 2019-07-25 20:08:03 +02:00
leds-lm36274.c leds: lm36274: cosmetic: rename lm36274_data to chip 2021-07-14 16:53:41 +02:00
leds-locomo.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp55xx-common.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp55xx-common.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp3944.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp3952.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp5521.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336 2019-06-05 17:37:07 +02:00
leds-lp5523.c leds: lp5523: check return value of lp5xx_read and jump to cleanup code 2021-05-26 12:05:20 +02:00
leds-lp5562.c leds: leds-lp5562 allow firmware files up to the maximum length 2019-07-22 20:35:01 +02:00
leds-lp8501.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp8860.c leds: lp8860: Use generic support for composing LED names 2019-07-25 20:07:55 +02:00
leds-lt3593.c leds: lt3593: Put fwnode in any case during ->probe() 2021-09-15 09:47:33 +02:00
leds-max8997.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-max77650.c led: max77650: add of_match table 2020-02-05 21:22:49 +00:00
leds-max77693.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-mc13783.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-menf21bmc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-mlxcpld.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
leds-mlxreg.c leds: mlxreg: Fix possible buffer overflow 2020-10-01 13:17:14 +02:00
leds-mt6323.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
leds-net48xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-netxbig.c leds: netxbig: Add of_node_put() in netxbig_leds_get_of_pdata() 2019-07-29 21:12:54 +02:00
leds-nic78bx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
leds-ns2.c leds: ns2: Add of_node_put() before return 2019-07-22 20:35:00 +02:00
leds-ot200.c leds: leds-ot200: Use devm_led_classdev_register 2015-11-03 08:59:13 +01:00
leds-pca955x.c LED updates for 5.3-rc1 2019-07-09 08:59:39 -07:00
leds-pca963x.c leds: pca963x: Fix open-drain initialization 2020-02-24 08:36:24 +01:00
leds-pca9532.c leds: pca953x: Include the right header 2019-08-08 20:38:24 +02:00
leds-pm8058.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
leds-powernv.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-pwm.c leds: pwm: Use struct_size() helper 2019-09-01 13:33:29 +02:00
leds-rb532.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-regulator.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-s3c24xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-sc27xx-bltc.c leds: sc27xx-blt: Use generic support for composing LED names 2019-07-25 20:07:53 +02:00
leds-spi-byte.c leds: spi-byte: add single byte SPI LED driver 2019-05-24 22:19:43 +02:00
leds-ss4200.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 335 2019-06-05 17:37:06 +02:00
leds-sunfire.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-syscon.c leds: syscon: Use resource managed variant of device register 2019-09-01 13:33:27 +02:00
leds-tca6507.c LED updates for 5.3-rc1 2019-07-09 08:59:39 -07:00
leds-ti-lmu-common.c leds: ti-lmu-common: Move static keyword to the front of declaration 2019-09-03 20:34:46 +02:00
leds-tlc591xx.c leds: tlc591xx: update the maximum brightness 2020-01-26 10:01:02 +01:00
leds-wm831x-status.c leds: wm831x-status: fix use-after-free on unbind 2020-08-11 15:33:35 +02:00
leds-wm8350.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-wrap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds.h leds: core: Add support for composing LED class device names 2019-07-25 20:07:52 +02:00
uleds.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00