Re: [PATCH/RFC v3 0/7] Remove work queues from LED class drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jul 03, 2015 at 03:10:45PM +0200, Jacek Anaszewski wrote:
> This is a third version of the RFC aiming at removing work queues
> from LED class drivers, as well as getting rid of complimentary
> functionalities introduced along with addition of LED flash class
> extension.
> 
> 
> ======================
> Changes from version 2
> ======================
> 
> - split changes to several incremental patches
> - removed SET_BRIGHTNESS_SYNC and SET_BRIGHTNESS_ASYNC flags
> - fixed led_set_brightness_async function instead of renaming it
> 
> ======================
> Changes from version 1
> ======================
> 
> V2 includes also patches for one LED class driver
> and two LED flash class drivers, that show how the
> drivers will benefit from the optimization being
> introduced in the first patch of this patch set.
> 
> I was able to test only the LED Flash class drivers.
> 
> Original message from the patch 483a3122 ("leds: Use set_brightness_work for
> brightness_set ops that can sleep") that was sent previously as a single one:
> 
> Hi All,
> 
> Since this patch will affect all the LED subsystem drivers
> I'd like it was tested by as many developers as possible
> to make sure that I haven't missed something.
> 
> For the drivers which can sleep in their brightness_set ops
> (e.g. use mutex or gpio "cansleep" API) you only need to
> remove the work queues and move the code executed currently
> in the work queue task to the brightness_set op, as now
> LED core does the job.
> 
> For drivers that are capable of setting brightness with use
> of MMIO you need to set the LED_BRIGHTNESS_FAST flag, so
> that LED core would know that it doesn't have to employ
> work queue.
> 
> After the patch is positively verified I will create relevant
> patches for every LED class driver.
> 
> This patch is based on linux-next_20150622.
> 
> I am looking forward to your cooperation.
> 
> Best Regards,
> Jacek Anaszewski
> 
> Jacek Anaszewski (7):
>   leds: Add led_set_brightness_sync to the public LED subsystem API
>   leds: Improve asynchronous path of setting brightness
>   leds: Add an internal led_set_brightness_nosleep function
>   leds: Improve setting brightness in a non sleeping way
>   leds: Drivers shouldn't enforce SYNC/ASYNC brightness setting
>   media: flash: use led_set_brightness_sync for torch brightness
>   leds: pwm: remove work queue
> 
>  drivers/leds/led-class-flash.c                 |    7 ---
>  drivers/leds/led-class.c                       |   20 +++++----
>  drivers/leds/led-core.c                        |   42 +++++++++---------
>  drivers/leds/leds-aat1290.c                    |   50 ++++++---------------
>  drivers/leds/leds-ktd2692.c                    |   41 +++---------------
>  drivers/leds/leds-max77693.c                   |   55 +++---------------------
>  drivers/leds/leds-pwm.c                        |   24 ++---------
>  drivers/leds/leds.h                            |   34 ++++++++-------
>  drivers/leds/trigger/ledtrig-backlight.c       |    8 ++--
>  drivers/leds/trigger/ledtrig-default-on.c      |    2 +-
>  drivers/leds/trigger/ledtrig-gpio.c            |    6 +--
>  drivers/leds/trigger/ledtrig-heartbeat.c       |    4 +-
>  drivers/leds/trigger/ledtrig-oneshot.c         |    4 +-
>  drivers/leds/trigger/ledtrig-transient.c       |    8 ++--
>  drivers/media/v4l2-core/v4l2-flash-led-class.c |    8 ++--
>  include/linux/leds.h                           |   36 +++++++++++-----
>  16 files changed, 124 insertions(+), 225 deletions(-)

Hi Jacek,

I have successfully tested this patch set with both the leds-ns2 and
leds-netxbig drivers and with either sleeping and non-sleeping GPIOs
LEDs.

Tested-by: Simon Guinot <simon.guinot@xxxxxxxxxxxx>

Note that you may want to get rid of the comment
"Must not sleep, use a workqueue if needed" above the member
brightness_set in struct led_classdev.

Regards,

Simon

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux