On backlight disable for AUX based panels set the brightness to 0 before
disabling the backlight. PWM based backlight also does set the
brightness to 0 before disable.

Signed-off-by: Arun R Murthy <[email protected]>
---
 .../gpu/drm/i915/display/intel_dp_aux_backlight.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

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 a8d56ebf06a2..e4ce39c1eebb 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -355,9 +355,14 @@ intel_dp_aux_hdr_disable_backlight(const struct 
drm_connector_state *conn_state,
        struct intel_connector *connector = 
to_intel_connector(conn_state->connector);
        struct intel_panel *panel = &connector->panel;
 
-       /* Nothing to do for AUX based backlight controls */
-       if (panel->backlight.edp.intel_cap.sdr_uses_aux)
+       /*
+        * Drive the DPCD brightness to 0 before tearing down the link / power
+        * sequencer so the panel can blank emission gracefully.
+        */
+       if (panel->backlight.edp.intel_cap.sdr_uses_aux) {
+               intel_dp_aux_hdr_set_aux_backlight(conn_state, 0);
                return;
+       }
 
        /* Note we want the actual pwm_level to be 0, regardless of pwm_min */
        panel->backlight.pwm_funcs->disable(conn_state, 
intel_backlight_invert_pwm_level(connector, 0));
@@ -519,6 +524,12 @@ static void intel_dp_aux_vesa_disable_backlight(const 
struct drm_connector_state
        struct intel_panel *panel = &connector->panel;
        struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
 
+       /*
+        * Drive the DPCD brightness register to 0 before clearing BL_ENABLE or
+        * dropping the panel power.
+        */
+       drm_edp_backlight_set_level(&intel_dp->aux, 
&panel->backlight.edp.vesa.info, 0);
+
        drm_edp_backlight_disable(&intel_dp->aux, 
&panel->backlight.edp.vesa.info);
 
        if (!(panel->backlight.edp.vesa.info.aux_enable ||
-- 
2.25.1

Reply via email to