aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-09-12 13:25:19 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-12 16:20:41 -0400
commit897493504addc5609f04a2c4f73c37ab972c29b2 (patch)
tree49beaa53ed2964057aa620adc4034d651104d035 /drivers
parentdd8849c8f59ec1cee4809a0c5e603e045abe860e (diff)
drm/i915: Ensure that the crtcinfo is populated during mode_fixup()
This should fix the mysterious mode setting failures reported during boot up and after resume, generally for i8xx class machines. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16478 Reported-and-tested-by: Xavier Chantry <chantry.xavier@gmail.com> Buzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29413 Tested-by: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 19daead5b525..b5bf51a4502d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2463,11 +2463,19 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
2463 struct drm_display_mode *adjusted_mode) 2463 struct drm_display_mode *adjusted_mode)
2464{ 2464{
2465 struct drm_device *dev = crtc->dev; 2465 struct drm_device *dev = crtc->dev;
2466
2466 if (HAS_PCH_SPLIT(dev)) { 2467 if (HAS_PCH_SPLIT(dev)) {
2467 /* FDI link clock is fixed at 2.7G */ 2468 /* FDI link clock is fixed at 2.7G */
2468 if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4) 2469 if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4)
2469 return false; 2470 return false;
2470 } 2471 }
2472
2473 /* XXX some encoders set the crtcinfo, others don't.
2474 * Obviously we need some form of conflict resolution here...
2475 */
2476 if (adjusted_mode->crtc_htotal == 0)
2477 drm_mode_set_crtcinfo(adjusted_mode, 0);
2478
2471 return true; 2479 return true;
2472} 2480}
2473 2481