[PATCH] backlight: pwm_bl: disable PWM when 'duty_cycle' is zero

Subsystems: backlight class/subsystem, framebuffer layer, the rest

STALE3720d

4 messages, 2 authors, 2016-06-07 · open the first message on its own page

[PATCH] backlight: pwm_bl: disable PWM when 'duty_cycle' is zero

From: Lothar Waßmann <hidden>
Date: 2016-06-06 10:45:26

'brightness' is usually an index into a table of duty_cycle values,
where the value at index 0 may well be non-zero
(tegra30-apalis-eval.dts and tegra30-colibri-eval-v3.dts are real-life
examples).
Thus brightness = 0 does not necessarily mean that the PWM output
will be inactive.
Check for 'duty_cycle = 0' rather than 'brightness = 0' to decide
whether to disable the PWM.

Signed-off-by: Lothar Waßmann <redacted>
---
 drivers/video/backlight/pwm_bl.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index b2b366b..80b2b52 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -103,8 +103,8 @@ static int pwm_backlight_update_status(struct backlight_device *bl)
 	if (pb->notify)
 		brightness = pb->notify(pb->dev, brightness);
 
-	if (brightness > 0) {
-		duty_cycle = compute_duty_cycle(pb, brightness);
+	duty_cycle = compute_duty_cycle(pb, brightness);
+	if (duty_cycle > 0) {
 		pwm_config(pb->pwm, duty_cycle, pb->period);
 		pwm_backlight_power_on(pb, brightness);
 	} else
-- 
2.1.4

Re: [PATCH] backlight: pwm_bl: disable PWM when 'duty_cycle' is zero

From: Tomi Valkeinen <hidden>
Date: 2016-06-06 12:02:40

Hi,

On 06/06/16 13:44, Lothar Waßmann wrote:
'brightness' is usually an index into a table of duty_cycle values,
where the value at index 0 may well be non-zero
(tegra30-apalis-eval.dts and tegra30-colibri-eval-v3.dts are real-life
examples).
Thus brightness == 0 does not necessarily mean that the PWM output
will be inactive.
Check for 'duty_cycle == 0' rather than 'brightness == 0' to decide
whether to disable the PWM.
The binding doc does say:

  - brightness-levels: Array of distinct brightness levels. Typically these
      are in the range from 0 to 255, but any range starting at 0 will do.
      The actual brightness level (PWM duty cycle) will be interpolated
      from these values. 0 means a 0% duty cycle (darkest/off), while the
      last value in the array represents a 100% duty cycle (brightest).

 Tomi

Re: [PATCH] backlight: pwm_bl: disable PWM when 'duty_cycle' is zero

From: Lothar Waßmann <hidden>
Date: 2016-06-07 06:49:27

Hi,

On Mon, 6 Jun 2016 15:02:21 +0300 Tomi Valkeinen wrote:
Hi,

On 06/06/16 13:44, Lothar Waßmann wrote:
quoted
'brightness' is usually an index into a table of duty_cycle values,
where the value at index 0 may well be non-zero
(tegra30-apalis-eval.dts and tegra30-colibri-eval-v3.dts are real-life
examples).
Thus brightness = 0 does not necessarily mean that the PWM output
will be inactive.
Check for 'duty_cycle = 0' rather than 'brightness = 0' to decide
whether to disable the PWM.
The binding doc does say:

  - brightness-levels: Array of distinct brightness levels. Typically these
      are in the range from 0 to 255, but any range starting at 0 will do.
      The actual brightness level (PWM duty cycle) will be interpolated
      from these values. 0 means a 0% duty cycle (darkest/off), while the
      last value in the array represents a 100% duty cycle (brightest).
So, what should I do, when I need a range of levels that doesn't start
at 0? E.g. if the brightness is inverse proportional to the PWM duty
cycle.



Lothar Waßmann

Re: [PATCH] backlight: pwm_bl: disable PWM when 'duty_cycle' is zero

From: Tomi Valkeinen <hidden>
Date: 2016-06-07 08:03:25

On 07/06/16 09:49, Lothar Waßmann wrote:
Hi,

On Mon, 6 Jun 2016 15:02:21 +0300 Tomi Valkeinen wrote:
quoted
Hi,

On 06/06/16 13:44, Lothar Waßmann wrote:
quoted
'brightness' is usually an index into a table of duty_cycle values,
where the value at index 0 may well be non-zero
(tegra30-apalis-eval.dts and tegra30-colibri-eval-v3.dts are real-life
examples).
Thus brightness == 0 does not necessarily mean that the PWM output
will be inactive.
Check for 'duty_cycle == 0' rather than 'brightness == 0' to decide
whether to disable the PWM.
The binding doc does say:

  - brightness-levels: Array of distinct brightness levels. Typically these
      are in the range from 0 to 255, but any range starting at 0 will do.
      The actual brightness level (PWM duty cycle) will be interpolated
      from these values. 0 means a 0% duty cycle (darkest/off), while the
      last value in the array represents a 100% duty cycle (brightest).
So, what should I do, when I need a range of levels that doesn't start
at 0? E.g. if the brightness is inverse proportional to the PWM duty
cycle.
That's a question to the PWM/backlight maintainers, but I think in the
addition of your patch, the binding doc needs to be changed, as it
doesn't hold true after your patch.

 Tomi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help