summaryrefslogtreecommitdiff
path: root/sys/dev/pci/drm/i915
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2019-09-16 14:57:35 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2019-09-16 14:57:35 +0000
commitd31770024d6d00de3d168dd46507ab1be2389509 (patch)
tree28852ee381b3b3de81aa4945179c0e285bdf0989 /sys/dev/pci/drm/i915
parenta5a0fe45824d4d35e09b19310cb50afd67732f04 (diff)
drm/i915: Re-apply "Perform link quality check, unconditionally during long pulse"
From Jan-Marek Glogowski c09d675f294b64c607ed87c946698836db2b9530 in linux 4.19.y/4.19.73 3cf71bc9904d7ee4a25a822c5dcb54c7804ea388 in mainline linux
Diffstat (limited to 'sys/dev/pci/drm/i915')
-rw-r--r--sys/dev/pci/drm/i915/intel_dp.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/i915/intel_dp.c b/sys/dev/pci/drm/i915/intel_dp.c
index 1559ed429f4..270c2bc451e 100644
--- a/sys/dev/pci/drm/i915/intel_dp.c
+++ b/sys/dev/pci/drm/i915/intel_dp.c
@@ -4739,6 +4739,22 @@ intel_dp_long_pulse(struct intel_connector *connector,
*/
status = connector_status_disconnected;
goto out;
+ } else {
+ /*
+ * If display is now connected check links status,
+ * there has been known issues of link loss triggering
+ * 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.
+ */
+ struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
+
+ intel_dp_retrain_link(encoder, ctx);
}
/*