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
