Re: [U-Boot] [PATCH] video: backlight: fix pwm invertation

Hi,
On 6/27/19 9:56 PM, marvin24@posteo.de wrote:
Am Freitag, 21. Juni 2019, 22:01:35 CEST schrieb Marc Dietrich:
Fixes: 57e7775413 ("video: backlight: Parse PWM polarity cell")
set_pwm will always fail if pwm_set_invert is not implemented, leaving the backlight dark. Fix this by calling pwm_set_invert only if pwm is inverted.
I'm not sure if this is true. pwm_set_invert() checks for .set_invert. Which pwm driver you're using?
Signed-off-by: Marc Dietrich marvin24@gmx.de
ping?
drivers/video/pwm_backlight.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/video/pwm_backlight.c b/drivers/video/pwm_backlight.c index a587977c22..26bcbeb42b 100644 --- a/drivers/video/pwm_backlight.c +++ b/drivers/video/pwm_backlight.c @@ -61,12 +61,13 @@ static int set_pwm(struct pwm_backlight_priv *priv)
duty_cycle = priv->period_ns * (priv->cur_level - priv->min_level) / (priv->max_level - priv->min_level + 1);
- ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, duty_cycle);
if (ret)
return log_ret(ret);
ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity);
- if (!ret && priv->polarity)
ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity);
This shouldn't be a problem. Rather the driver doesn't handle polarity correctly.
- return log_ret(ret); }
-- 2.17.1
P.S.
You should cc to all maintainers. You can use ./scripts/get_maintainer.pl.
Best regards, Stefan Mavrodiev

Le mar. 2 juil. 2019 à 09:41, Stefan Mavrodiev stefan@olimex.com a écrit :
Hi,
On 6/27/19 9:56 PM, marvin24@posteo.de wrote:
Am Freitag, 21. Juni 2019, 22:01:35 CEST schrieb Marc Dietrich:
Fixes: 57e7775413 ("video: backlight: Parse PWM polarity cell")
set_pwm will always fail if pwm_set_invert is not implemented, leaving the backlight dark. Fix this by calling pwm_set_invert only if pwm is inverted.
I'm not sure if this is true. pwm_set_invert() checks for .set_invert. Which pwm driver you're using?
This is drivers/pwm/pwm_tegra.c Here .set_invert is not implemented.
Thx for the review.

Hi,
On 7/2/19 11:42 AM, Nicolas Chauvet wrote:
Le mar. 2 juil. 2019 à 09:41, Stefan Mavrodiev stefan@olimex.com a écrit :
Hi,
On 6/27/19 9:56 PM, marvin24@posteo.de wrote:
Am Freitag, 21. Juni 2019, 22:01:35 CEST schrieb Marc Dietrich:
Fixes: 57e7775413 ("video: backlight: Parse PWM polarity cell")
set_pwm will always fail if pwm_set_invert is not implemented, leaving the backlight dark. Fix this by calling pwm_set_invert only if pwm is inverted.
I'm not sure if this is true. pwm_set_invert() checks for .set_invert. Which pwm driver you're using?
This is drivers/pwm/pwm_tegra.c Here .set_invert is not implemented.
Thx for the review.
You're right. Some drivers has #pwm-cells = <2> and in this case polarity is 0.
However your approach is wrong. You will break other drivers with #pwm-cells = <3>. I think your patch should look something like this:
ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity); if (ret == -ENOSYS) ret = 0;
return log_ret(ret);
This will not return error if set_inverted is not implemented.
Stefan

On 7/2/19 12:05 PM, Stefan Mavrodiev wrote:
Hi,
On 7/2/19 11:42 AM, Nicolas Chauvet wrote:
Le mar. 2 juil. 2019 à 09:41, Stefan Mavrodiev stefan@olimex.com a écrit :
Hi,
On 6/27/19 9:56 PM, marvin24@posteo.de wrote:
Am Freitag, 21. Juni 2019, 22:01:35 CEST schrieb Marc Dietrich:
Fixes: 57e7775413 ("video: backlight: Parse PWM polarity cell")
set_pwm will always fail if pwm_set_invert is not implemented, leaving the backlight dark. Fix this by calling pwm_set_invert only if pwm is inverted.
I'm not sure if this is true. pwm_set_invert() checks for .set_invert. Which pwm driver you're using?
This is drivers/pwm/pwm_tegra.c Here .set_invert is not implemented.
Thx for the review.
You're right. Some drivers has #pwm-cells = <2> and in this case polarity is 0.
However your approach is wrong. You will break other drivers with #pwm-cells = <3>. I think your patch should look something like this:
ret = pwm_set_invert(priv->pwm, priv->channel, priv->polarity); if (ret == -ENOSYS) ret = 0;
return log_ret(ret);
You should ask the custodians to review this.
This will not return error if set_inverted is not implemented.
Stefan
participants (2)
-
Nicolas Chauvet
-
Stefan Mavrodiev