diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-12 13:25:19 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-12 16:20:41 -0400 |
commit | 897493504addc5609f04a2c4f73c37ab972c29b2 (patch) | |
tree | 49beaa53ed2964057aa620adc4034d651104d035 /drivers/gpu/drm | |
parent | dd8849c8f59ec1cee4809a0c5e603e045abe860e (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/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 8 |
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 | ||