If the brightness fetched from VBT/previous state is 0 on backlight
initialization, then set the brightness to a default/max value.
Whenever the minimum brightness is reported as 0 there are chances
we end up with blank screen. This confuses the user into thinking
the display is acting weird. This occurs in eDP 1.5 when
we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness
via luminance values.

Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
Signed-off-by: Suraj Kandpal <[email protected]>
Reviewed-by: Arun R Murthy <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c 
b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index 517e32d7702d..b9e9a05861d8 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -564,6 +564,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct 
intel_connector *connector,
                }
                panel->backlight.level = 
intel_dp_aux_vesa_get_backlight(connector, 0);
                panel->backlight.enabled = panel->backlight.level != 0;
+               if (!panel->backlight.level)
+                       panel->backlight.level = panel->backlight.max;
                drm_dbg_kms(display->drm,
                            "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is 
controlled through DPCD\n",
                            connector->base.base.id, connector->base.name);
@@ -573,6 +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct 
intel_connector *connector,
                if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
                        panel->backlight.level = current_level;
                        panel->backlight.enabled = panel->backlight.level != 0;
+                       if (!panel->backlight.level)
+                               panel->backlight.level = panel->backlight.max;
                } else {
                        panel->backlight.level = panel->backlight.max;
                        panel->backlight.enabled = false;
-- 
2.34.1

Reply via email to