summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/intel_tv.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-09-22 18:10:09 (GMT)
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-23 10:05:44 (GMT)
commit29e1316ab129f2d3a9ea874e7c9a4cb936f43542 (patch)
tree45130e31d563a1e79d3628aa37a3bad63c6bb355 /drivers/gpu/drm/i915/intel_tv.c
parent20f0cd55f68e0678909214c60b3595a22124bdb0 (diff)
downloadlinux-fsl-qoriq-29e1316ab129f2d3a9ea874e7c9a4cb936f43542.tar.xz
drm/i915/tv: Sleep before checking for state changes.
We need to wait for the PLLs to settle prior to detecting the state changes. The BIOS writers guide suggests waiting for the next vblank. Reported-by: Carlos R. Mafra <crmafra2@gmail.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_tv.c')
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 49ab11c..106560b 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1271,8 +1271,12 @@ intel_tv_detect_type (struct intel_tv *intel_tv)
I915_WRITE(TV_DAC, tv_dac);
POSTING_READ(TV_DAC);
+ intel_wait_for_vblank(intel_tv->base.base.dev,
+ to_intel_crtc(intel_tv->base.base.crtc)->pipe);
+
type = -1;
if (wait_for((tv_dac = I915_READ(TV_DAC)) & TVDAC_STATE_CHG, 20) == 0) {
+ DRM_DEBUG_KMS("TV detected: %x, %x\n", tv_ctl, tv_dac);
/*
* A B C
* 0 1 1 Composite
@@ -1289,8 +1293,7 @@ intel_tv_detect_type (struct intel_tv *intel_tv)
DRM_DEBUG_KMS("Detected Component TV connection\n");
type = DRM_MODE_CONNECTOR_Component;
} else {
- DRM_DEBUG_KMS("Unrecognised TV connection: %x\n",
- tv_dac);
+ DRM_DEBUG_KMS("Unrecognised TV connection\n");
}
}