From 76c2ff3e5fd8068b433acbb0e76d33fa5116dade Mon Sep 17 00:00:00 2001 From: Dario Binacchi Date: Sun, 11 Oct 2020 14:28:04 +0200 Subject: [PATCH] video: backlight: fix pwm's duty cycle calculation For levels equal to the maximum value, the duty cycle must be equal to the period. Signed-off-by: Dario Binacchi Reviewed-by: Simon Glass --- drivers/video/pwm_backlight.c | 2 +- test/dm/panel.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/video/pwm_backlight.c b/drivers/video/pwm_backlight.c index acfde7b..9519180 100644 --- a/drivers/video/pwm_backlight.c +++ b/drivers/video/pwm_backlight.c @@ -63,7 +63,7 @@ static int set_pwm(struct pwm_backlight_priv *priv) int ret; duty_cycle = priv->period_ns * (priv->cur_level - priv->min_level) / - (priv->max_level - priv->min_level + 1); + (priv->max_level - priv->min_level); ret = pwm_set_config(priv->pwm, priv->channel, priv->period_ns, duty_cycle); if (ret) diff --git a/test/dm/panel.c b/test/dm/panel.c index a840fb4..49f5ac7 100644 --- a/test/dm/panel.c +++ b/test/dm/panel.c @@ -40,7 +40,7 @@ static int dm_test_panel(struct unit_test_state *uts) ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); ut_asserteq(1000, period_ns); - ut_asserteq(170 * 1000 / 256, duty_ns); + ut_asserteq(170 * 1000 / 255, duty_ns); ut_asserteq(true, enable); ut_asserteq(false, polarity); ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); @@ -49,29 +49,29 @@ static int dm_test_panel(struct unit_test_state *uts) ut_assertok(panel_set_backlight(dev, 40)); ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); - ut_asserteq(64 * 1000 / 256, duty_ns); + ut_asserteq(64 * 1000 / 255, duty_ns); ut_assertok(panel_set_backlight(dev, BACKLIGHT_MAX)); ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); - ut_asserteq(255 * 1000 / 256, duty_ns); + ut_asserteq(255 * 1000 / 255, duty_ns); ut_assertok(panel_set_backlight(dev, BACKLIGHT_MIN)); ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); - ut_asserteq(0 * 1000 / 256, duty_ns); + ut_asserteq(0 * 1000 / 255, duty_ns); ut_asserteq(1, sandbox_gpio_get_value(gpio, 1)); ut_assertok(panel_set_backlight(dev, BACKLIGHT_DEFAULT)); ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); ut_asserteq(true, enable); - ut_asserteq(170 * 1000 / 256, duty_ns); + ut_asserteq(170 * 1000 / 255, duty_ns); ut_assertok(panel_set_backlight(dev, BACKLIGHT_OFF)); ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns, &enable, &polarity)); - ut_asserteq(0 * 1000 / 256, duty_ns); + ut_asserteq(0 * 1000 / 255, duty_ns); ut_asserteq(0, sandbox_gpio_get_value(gpio, 1)); ut_asserteq(false, regulator_get_enable(reg)); -- 2.7.4