So far for devices using an external PWM controller (devices using
pwm_setup_backlight()), we have been hardcoding the minimum allowed
PWM level to 0. But several of these devices specify a non 0 minimum
setting in their VBT.

Change pwm_setup_backlight() to use get_backlight_min_vbt() to get
the minimum level.

Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
 drivers/gpu/drm/i915/display/intel_panel.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_panel.c 
b/drivers/gpu/drm/i915/display/intel_panel.c
index 14e611c92194..cb28b9908ca4 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -1925,8 +1925,8 @@ static int pwm_setup_backlight(struct intel_connector 
*connector,
         */
        pwm_apply_args(panel->backlight.pwm);
 
-       panel->backlight.min = 0; /* 0% */
        panel->backlight.max = 100; /* 100% */
+       panel->backlight.min = get_backlight_min_vbt(connector);
        level = intel_panel_compute_brightness(connector, 100);
        ns = DIV_ROUND_UP(level * panel->backlight.pwm_period_ns, 100);
 
@@ -1941,8 +1941,9 @@ static int pwm_setup_backlight(struct intel_connector 
*connector,
 
        level = DIV_ROUND_UP(pwm_get_duty_cycle(panel->backlight.pwm) * 100,
                             panel->backlight.pwm_period_ns);
-       panel->backlight.level =
-               intel_panel_compute_brightness(connector, level);
+       level = intel_panel_compute_brightness(connector, level);
+       panel->backlight.level = clamp(level, panel->backlight.min,
+                                      panel->backlight.max);
        panel->backlight.enabled = panel->backlight.level != 0;
 
        drm_info(&dev_priv->drm, "Using %s PWM for LCD backlight control\n",
-- 
2.26.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to