|
@@ -4685,9 +4685,20 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
|
|
|
*/
|
|
|
status = connector_status_disconnected;
|
|
|
goto out;
|
|
|
- } else if (connector->status == connector_status_connected) {
|
|
|
+ } else {
|
|
|
+ /*
|
|
|
+ * If display is now connected check links status,
|
|
|
+ * there has been known issues of link loss triggerring
|
|
|
+ * long pulse.
|
|
|
+ *
|
|
|
+ * Some sinks (eg. ASUS PB287Q) seem to perform some
|
|
|
+ * weird HPD ping pong during modesets. So we can apparently
|
|
|
+ * end up with HPD going low during a modeset, and then
|
|
|
+ * going back up soon after. And once that happens we must
|
|
|
+ * retrain the link to get a picture. That's in case no
|
|
|
+ * userspace component reacted to intermittent HPD dip.
|
|
|
+ */
|
|
|
intel_dp_check_link_status(intel_dp);
|
|
|
- goto out;
|
|
|
}
|
|
|
|
|
|
/*
|