drm/i915: Add 30ms delay to make SDVO TV detection reliable.
authorZhao Yakui <yakui.zhao@intel.com>
Fri, 6 Nov 2009 07:39:56 +0000 (15:39 +0800)
committerEric Anholt <eric@anholt.net>
Tue, 1 Dec 2009 18:33:12 +0000 (10:33 -0800)
Without this, on some boots the TV wouldn't be detected.  Testing
showed 15ms to be insufficient.

https://bugs.freedesktop.org/show_bug.cgi?id=24290
https://bugs.freedesktop.org/show_bug.cgi?id=20785

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Tested-by: Yan Seiner <yan@seiner.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_sdvo.c

index 55b8beb0a152b2299e5e84c51a46e4166a264b3d..dba5147f4064554a515a5a95aa477c3476d66905 100644 (file)
@@ -1617,6 +1617,10 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connect
 
        intel_sdvo_write_cmd(intel_output,
                             SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0);
+       if (sdvo_priv->is_tv) {
+               /* add 30ms delay when the output type is SDVO-TV */
+               mdelay(30);
+       }
        status = intel_sdvo_read_response(intel_output, &response, 2);
 
        DRM_DEBUG_KMS("SDVO response %d %d\n", response & 0xff, response >> 8);