diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-05-31 08:08:53 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-31 08:50:31 -0400 |
commit | 9e612a008fa7fe493a473454def56aa321479495 (patch) | |
tree | 12682ebbbb738f59935957be8932ec11a985dfbc | |
parent | c3b20037926e607b6cdaecbf9d3103e2ca63bc31 (diff) |
drm/i915/crt: Do not rely upon the HPD presence pin
Whilst most monitors do wire up the HPD presence pin, it seems quite a
few KVM do not. Therefore if we simply rely on the HPD pin being
asserted to indicate a connected monitor we fail miserable, so fall back
to performing a DCC query for the EDID.
Reported-and-tested-by: Matthieu LAVIE <boiteamadmax@hotmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50501
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 75a70c46ef1b..844e93e1e395 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c | |||
@@ -453,13 +453,15 @@ intel_crt_detect(struct drm_connector *connector, bool force) | |||
453 | struct intel_load_detect_pipe tmp; | 453 | struct intel_load_detect_pipe tmp; |
454 | 454 | ||
455 | if (I915_HAS_HOTPLUG(dev)) { | 455 | if (I915_HAS_HOTPLUG(dev)) { |
456 | /* We can not rely on the HPD pin always being correctly wired | ||
457 | * up, for example many KVM do not pass it through, and so | ||
458 | * only trust an assertion that the monitor is connected. | ||
459 | */ | ||
456 | if (intel_crt_detect_hotplug(connector)) { | 460 | if (intel_crt_detect_hotplug(connector)) { |
457 | DRM_DEBUG_KMS("CRT detected via hotplug\n"); | 461 | DRM_DEBUG_KMS("CRT detected via hotplug\n"); |
458 | return connector_status_connected; | 462 | return connector_status_connected; |
459 | } else { | 463 | } else |
460 | DRM_DEBUG_KMS("CRT not detected via hotplug\n"); | 464 | DRM_DEBUG_KMS("CRT not detected via hotplug\n"); |
461 | return connector_status_disconnected; | ||
462 | } | ||
463 | } | 465 | } |
464 | 466 | ||
465 | if (intel_crt_detect_ddc(connector)) | 467 | if (intel_crt_detect_ddc(connector)) |