LED class drivers use duplicated workqueue method to implement .brightness_set() and some of them forget to use workqueue, since workqueue is required by .brightness_set() in atomic context. This patchset add workqueue into API function led_set_brightness(). So class drivers don't need to worry about it. With the first patch, we can remove all the workqueue handling code in class drivers. For example, workqueue was removed from leds-gpio.c Bryan Wu (2): leds: use workqueue in led_set_brightness() API internally leds-gpio: remove workqueue in .brightness_set() drivers/leds/led-class.c | 23 +++++++++++---------- drivers/leds/led-core.c | 15 +++++++------- drivers/leds/leds-gpio.c | 43 ++++++--------------------------------- drivers/leds/leds.h | 11 ++-------- drivers/leds/ledtrig-backlight.c | 8 ++++---- drivers/leds/ledtrig-default-on.c | 2 +- drivers/leds/ledtrig-gpio.c | 6 +++--- drivers/leds/ledtrig-heartbeat.c | 2 +- drivers/leds/ledtrig-oneshot.c | 4 ++-- drivers/leds/ledtrig-transient.c | 8 ++++---- include/linux/leds.h | 12 ++++++----- 11 files changed, 49 insertions(+), 85 deletions(-) -- 1.7.11.4 -- To unsubscribe from this list: send the line "unsubscribe linux-leds" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html