diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2019-09-16 14:57:35 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2019-09-16 14:57:35 +0000 |
commit | d31770024d6d00de3d168dd46507ab1be2389509 (patch) | |
tree | 28852ee381b3b3de81aa4945179c0e285bdf0989 /sys/dev/pci/drm/i915 | |
parent | a5a0fe45824d4d35e09b19310cb50afd67732f04 (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.c | 16 |
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); } /* |