linux/drivers/leds
Christian Marangi d1b9e1391a leds: trigger: netdev: Use mutex instead of spinlocks
Some LEDs may require to sleep while doing some operation like setting
brightness and other cleanup.

For this reason, using a spinlock will cause a sleep under spinlock
warning.

It should be safe to convert this to a sleepable lock since:
- sysfs read/write can sleep
- netdev_trig_work is a work queue and can sleep
- netdev _trig_notify can sleep

The spinlock was used when brightness didn't support sleeping, but this
changed and now it supported with brightness_set_blocking().

Convert to mutex lock to permit sleeping using brightness_set_blocking().

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230419210743.3594-6-ansuelsmth@gmail.com
2023-05-25 12:07:38 +01:00
..
blink leds: lgm-sso: switch to using devm_fwnode_gpiod_get() 2022-11-09 13:59:28 +01:00
flash leds: flash: Set variables mvflash_{3,4}ch_regs storage-class-specifier to static 2023-03-30 13:58:24 +01:00
rgb leds: pwm-multicolor: Simplify an error message 2023-04-20 12:32:14 +01:00
simple leds: simatic-ipc-leds-gpio: Make sure we have the GPIO providing driver 2023-01-30 08:03:43 +00:00
trigger leds: trigger: netdev: Use mutex instead of spinlocks 2023-05-25 12:07:38 +01:00
Kconfig leds: bd2606mvv: Driver for the Rohm 6 Channel i2c LED driver 2023-04-27 17:42:33 +01:00
led-class-flash.c led-class-flash: fix -Wrestrict warning 2021-09-27 16:09:42 +02:00
led-class-multicolor.c leds: multicolor: Introduce a multicolor class definition 2020-07-22 14:41:29 +02:00
led-class.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
led-core.c leds: move default_state read from fwnode to core 2021-08-18 08:27:30 +02:00
led-triggers.c leds: trigger: use RCU to protect the led_cdevs list 2021-09-27 16:16:42 +02:00
leds-88pm860x.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-acer-a500.c leds: Add driver for Acer Iconia Tab A500 2020-09-26 21:56:42 +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: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:36 +00:00
leds-apu.c leds: apu: extend support for PC Engines APU1 with newer firmware 2021-02-19 22:15:10 +01:00
leds-ariel.c leds: leds-ariel: convert comma to semicolon 2021-01-31 10:38:02 +01:00
leds-aw2013.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-bcm6328.c leds: bcm6328: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:37 +00:00
leds-bcm6358.c leds: bcm6358: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:38 +00:00
leds-bd2606mvv.c leds: bd2606mvv: Driver for the Rohm 6 Channel i2c LED driver 2023-04-27 17:42:33 +01:00
leds-bd2802.c leds: bd2802: Convert to i2c's .probe_new() 2023-01-30 08:03:18 +00:00
leds-blinkm.c leds: blinkm: Convert to i2c's .probe_new() 2023-01-30 08:03:18 +00: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 leds: various: use device_get_match_data 2020-09-26 21:56:39 +02:00
leds-cr0014114.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-da903x.c leds: da903x: fix use-after-free on unbind 2020-06-22 10:37:58 +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 spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-el15203000.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-gpio-register.c leds: leds-gpio-register: Supply description for param 'id' 2021-05-28 11:38:54 +02:00
leds-gpio.c leds: gpio: switch to using devm_fwnode_gpiod_get() 2022-11-09 13:59:21 +01:00
leds-hp6xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-ip30.c leds: ip30: compile if COMPILE_TEST=y 2020-09-26 21:56:38 +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: Convert to i2c's .probe_new() 2023-01-30 08:03:19 +00:00
leds-is31fl319x.c leds: is31fl319x: Wrap mutex_destroy() for devm_add_action_or_rest() 2023-01-30 08:03:34 +00:00
leds-lm355x.c leds: lm355x: Convert to i2c's .probe_new() 2023-01-30 08:03:21 +00:00
leds-lm3530.c leds: lm3530: Convert to i2c's .probe_new() 2023-01-30 08:03:20 +00:00
leds-lm3532.c leds: lm3532: Convert to i2c's .probe_new() 2023-01-30 08:03:21 +00:00
leds-lm3533.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-lm3642.c leds: lm3642: Convert to i2c's .probe_new() 2023-01-30 08:03:22 +00:00
leds-lm3692x.c leds: lm3692x: Convert to i2c's .probe_new() 2023-01-30 08:03:23 +00:00
leds-lm3697.c leds: lm3697: Convert to i2c's .probe_new() 2023-01-30 08:03:24 +00:00
leds-lm36274.c leds: lm36274: Add missed property.h 2021-05-30 23:03:48 +02:00
leds-locomo.c ARM: pxa: split up mach/hardware.h 2022-04-19 16:27:05 +02:00
leds-lp50xx.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
leds-lp55xx-common.c leds: use sysfs_emit() to instead of scnprintf() 2022-12-07 21:05:20 +01:00
leds-lp55xx-common.h leds: lp55xx: Add multicolor framework support to lp55xx 2020-07-22 14:42:06 +02:00
leds-lp3944.c leds: lp3944: Convert to i2c's .probe_new() 2023-01-30 08:03:24 +00:00
leds-lp3952.c leds: lp3952: Convert to i2c's .probe_new() 2023-01-30 08:03:25 +00:00
leds-lp5521.c leds: lp5521: Convert to i2c's .probe_new() 2023-01-30 08:03:26 +00:00
leds-lp5523.c leds: lp5523: Convert to i2c's .probe_new() 2023-01-30 08:03:27 +00:00
leds-lp5562.c leds: lp5562: Convert to i2c's .probe_new() 2023-01-30 08:03:28 +00:00
leds-lp8501.c leds: lp8501: Convert to i2c's .probe_new() 2023-01-30 08:03:28 +00: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: Remove duplicate NULL checks for gpio_desc 2023-03-16 15:08:40 +00:00
leds-lt3593.c leds: lt3593: Put fwnode in any case during ->probe() 2021-08-03 23:49:31 +02:00
leds-max8997.c leds: max8997: Don't error if there is no pdata 2022-10-22 11:55:03 +02:00
leds-max77650.c leds: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-mc13783.c leds: various: use only available OF children 2020-09-26 21:56:39 +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 leds: leds-mlxcpld: Fix a bunch of kernel-doc formatting issues 2021-05-28 11:39:00 +02:00
leds-mlxreg.c leds: leds-mlxreg: Fix incorrect documentation of struct member 'led_cdev' and 'led_cdev_name' 2021-05-28 11:38:59 +02:00
leds-mt6323.c leds: mt6323: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:39 +00: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: Use DEVICE_ATTR_{RW, RO, WO} macros 2020-12-30 19:37:13 +01: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: do not guard OF match pointer with of_match_ptr 2020-09-30 19:22:58 +02:00
leds-ot200.c
leds-pca955x.c leds: pca955x: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:40 +00:00
leds-pca963x.c leds: pca963x: Convert to i2c's .probe_new() 2023-01-30 08:03:31 +00:00
leds-pca9532.c leds: pca9532: Convert to i2c's .probe_new() 2023-01-30 08:03:30 +00:00
leds-pm8058.c leds: pm8058: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:41 +00:00
leds-powernv.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-pwm.c leds: pwm: Clear the led structure before parsing each child node 2023-01-30 08:00:51 +00:00
leds-rb532.c leds: rb532: cleanup whitespace 2020-01-02 22:41:53 +01:00
leds-regulator.c leds: regulator: Make probeable from device tree 2022-05-05 10:04:52 +02:00
leds-sc27xx-bltc.c leds: various: use only available OF children 2020-09-26 21:56:39 +02:00
leds-spi-byte.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-ss4200.c leds: ss4200: simplify the return expression of register_nasgpio_led() 2020-12-30 19:37:14 +01: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: Get rid of custom led_init_default_state_get() 2023-01-30 08:03:42 +00:00
leds-tca6507.c leds: tca6507: Fix error handling of using fwnode_property_read_string 2023-04-05 16:28:42 +01: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: Mark OF related data as maybe unused 2023-03-16 15:08:43 +00:00
leds-tps6105x.c leds: tps6105x: add driver for MFD chip LED mode 2019-12-21 20:10:02 +01:00
leds-turris-omnia.c leds: turris-omnia: Convert to i2c's .probe_new() 2023-01-30 08:03:33 +00:00
leds-wm831x-status.c leds: Use DEVICE_ATTR_{RW, RO, WO} macros 2020-12-30 19:37:13 +01: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: Move led_init_default_state_get() to the global header 2023-01-30 08:03:35 +00:00
Makefile leds: bd2606mvv: Driver for the Rohm 6 Channel i2c LED driver 2023-04-27 17:42:33 +01:00
TODO leds: TODO: Add documentation about possible subsystem improvements 2020-09-30 19:15:33 +02:00
uleds.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00