aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2010-04-07 05:11:19 -0400
committerEric Anholt <eric@anholt.net>2010-04-10 00:26:46 -0400
commitfb8b5a39b6310379d7b54c0c7113703a8eaf4a57 (patch)
tree765f0c61ea044e771be9a93c84c28ecaa0874a2b /drivers
parentbfac4d6725baacbfc085c38e231b8582a1b8f62b (diff)
drm/i915: Configure the TV sense state correctly on GM45 to make TV detection reliable
The TV detection logic is not reliable on the Cantiga platform. Sometimes the TV will be misdetected as the following two cases: - TV is misdetected on some laptops. e.g. There is no TV connector port or no TV is attached. But the TV is shown as connected. - TV connector type is misdetected. e.g. the component TV is attached, but the TV is shown as S-video type. According to the hardware requirement, the TV sense state bits of TV DAC register should be cleared to zero on Cantiga platfrom. https://bugzilla.kernel.org/show_bug.cgi?id=14792 Cc: Stable Team <stable@kernel.org> Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Tested-by: Santi <santi@agolina.net> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index d7d39b2327d..eea593071e4 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1399,6 +1399,15 @@ intel_tv_detect_type (struct drm_crtc *crtc, struct intel_encoder *intel_encoder
1399 DAC_A_0_7_V | 1399 DAC_A_0_7_V |
1400 DAC_B_0_7_V | 1400 DAC_B_0_7_V |
1401 DAC_C_0_7_V); 1401 DAC_C_0_7_V);
1402
1403 /*
1404 * The TV sense state should be cleared to zero on cantiga platform. Otherwise
1405 * the TV is misdetected. This is hardware requirement.
1406 */
1407 if (IS_GM45(dev))
1408 tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
1409 TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
1410
1402 I915_WRITE(TV_CTL, tv_ctl); 1411 I915_WRITE(TV_CTL, tv_ctl);
1403 I915_WRITE(TV_DAC, tv_dac); 1412 I915_WRITE(TV_DAC, tv_dac);
1404 intel_wait_for_vblank(dev); 1413 intel_wait_for_vblank(dev);