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 /drivers/gpu/drm | |
| 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>
Diffstat (limited to 'drivers/gpu/drm')
| -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 75a70c46ef1..844e93e1e39 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)) |
