|
@@ -1408,23 +1408,25 @@ static void dp_display_attention_work(struct work_struct *work)
|
|
mutex_unlock(&dp->session_lock);
|
|
mutex_unlock(&dp->session_lock);
|
|
|
|
|
|
if (dp->link->sink_request & (DP_TEST_LINK_PHY_TEST_PATTERN |
|
|
if (dp->link->sink_request & (DP_TEST_LINK_PHY_TEST_PATTERN |
|
|
- DP_TEST_LINK_TRAINING)) {
|
|
|
|
|
|
+ DP_TEST_LINK_TRAINING))
|
|
goto mst_attention;
|
|
goto mst_attention;
|
|
- } else {
|
|
|
|
- /*
|
|
|
|
- * It is possible that the connect_work skipped sending
|
|
|
|
- * the HPD notification if the attention message was
|
|
|
|
- * already pending. Send the notification here to
|
|
|
|
- * account for that. This is not needed if this
|
|
|
|
- * attention work was handling a test request
|
|
|
|
- */
|
|
|
|
- dp_display_send_hpd_notification(dp);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
cp_irq:
|
|
cp_irq:
|
|
if (dp_display_is_hdcp_enabled(dp) && dp->hdcp.ops->cp_irq)
|
|
if (dp_display_is_hdcp_enabled(dp) && dp->hdcp.ops->cp_irq)
|
|
dp->hdcp.ops->cp_irq(dp->hdcp.data);
|
|
dp->hdcp.ops->cp_irq(dp->hdcp.data);
|
|
|
|
+
|
|
|
|
+ if (!dp->mst.mst_active) {
|
|
|
|
+ /*
|
|
|
|
+ * It is possible that the connect_work skipped sending
|
|
|
|
+ * the HPD notification if the attention message was
|
|
|
|
+ * already pending. Send the notification here to
|
|
|
|
+ * account for that. This is not needed if this
|
|
|
|
+ * attention work was handling a test request
|
|
|
|
+ */
|
|
|
|
+ dp_display_send_hpd_notification(dp);
|
|
|
|
+ }
|
|
|
|
+
|
|
mst_attention:
|
|
mst_attention:
|
|
dp_display_mst_attention(dp);
|
|
dp_display_mst_attention(dp);
|
|
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
|
|
SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
|