|
@@ -1286,7 +1286,7 @@ static int dp_display_handle_disconnect(struct dp_display_private *dp)
|
|
|
}
|
|
|
|
|
|
mutex_lock(&dp->session_lock);
|
|
|
- if (rc && dp_display_state_is(DP_STATE_ENABLED))
|
|
|
+ if (dp_display_state_is(DP_STATE_ENABLED))
|
|
|
dp_display_clean(dp);
|
|
|
|
|
|
dp_display_host_unready(dp);
|
|
@@ -1334,6 +1334,13 @@ static int dp_display_usbpd_disconnect_cb(struct device *dev)
|
|
|
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY, dp->state,
|
|
|
dp->debug->psm_enabled);
|
|
|
|
|
|
+ /* skip if a disconnect is already in progress */
|
|
|
+ if (dp_display_state_is(DP_STATE_ABORTED)) {
|
|
|
+ DP_DEBUG("disconnect already in progress\n");
|
|
|
+ SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_CASE1, dp->state);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
if (dp->debug->psm_enabled && dp_display_state_is(DP_STATE_READY))
|
|
|
dp->link->psm_config(dp->link, &dp->panel->link_info, true);
|
|
|
|