diff --git a/msm/sde/sde_connector.c b/msm/sde/sde_connector.c index 4b958673..5afcf474 100644 --- a/msm/sde/sde_connector.c +++ b/msm/sde/sde_connector.c @@ -1728,6 +1728,20 @@ static int _sde_connector_set_prop_dyn_transfer_time(struct sde_connector *c_con return rc; } +static void _sde_connector_handle_dpms_off(struct sde_connector *c_conn, uint64_t val) +{ + /* suspend case: clear stale MISR */ + if (val == SDE_MODE_DPMS_OFF) { + memset(&c_conn->previous_misr_sign, 0, sizeof(struct sde_misr_sign)); + + /* reset backlight scale of LTM */ + if (c_conn->bl_scale_sv != MAX_SV_BL_SCALE_LEVEL) { + c_conn->bl_scale_sv = MAX_SV_BL_SCALE_LEVEL; + c_conn->bl_scale_dirty = true; + } + } +} + static int sde_connector_atomic_set_property(struct drm_connector *connector, struct drm_connector_state *state, struct drm_property *property, @@ -1823,9 +1837,7 @@ static int sde_connector_atomic_set_property(struct drm_connector *connector, _sde_connector_set_prop_dyn_transfer_time(c_conn, val); break; case CONNECTOR_PROP_LP: - /* suspend case: clear stale MISR */ - if (val == SDE_MODE_DPMS_OFF) - memset(&c_conn->previous_misr_sign, 0, sizeof(struct sde_misr_sign)); + _sde_connector_handle_dpms_off(c_conn, val); break; default: break;