diff options
author | Zhao Yakui <yakui.zhao@intel.com> | 2009-09-10 03:45:49 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-09-10 14:31:04 -0400 |
commit | bb66c5122b4300b475b585fffb811311f39f5431 (patch) | |
tree | 0d356b75e3d0e9002bf40df02b400bc137e8b4f3 /drivers/gpu | |
parent | e270846fa7c350712553d767e61cf8b3bbfbd58a (diff) |
drm/i915: Write zero to DPLL_MD Reg for non-SDVO output
When the output device is LVDS, maybe the pixel clock of adjusted_mode will be
less than that in mode. In such case it will set the incorrect multipler factor
in DPLL_MD register.
So the dpll_md_reg will be reset when the output type is non-SDVO
https://bugs.freedesktop.org/show_bug.cgi?id=22761
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewd-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 155719ff99d1..cb5305ccb15c 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -2652,9 +2652,12 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
2652 | udelay(150); | 2652 | udelay(150); |
2653 | 2653 | ||
2654 | if (IS_I965G(dev) && !IS_IGDNG(dev)) { | 2654 | if (IS_I965G(dev) && !IS_IGDNG(dev)) { |
2655 | sdvo_pixel_multiply = adjusted_mode->clock / mode->clock; | 2655 | if (is_sdvo) { |
2656 | I915_WRITE(dpll_md_reg, (0 << DPLL_MD_UDI_DIVIDER_SHIFT) | | 2656 | sdvo_pixel_multiply = adjusted_mode->clock / mode->clock; |
2657 | I915_WRITE(dpll_md_reg, (0 << DPLL_MD_UDI_DIVIDER_SHIFT) | | ||
2657 | ((sdvo_pixel_multiply - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT)); | 2658 | ((sdvo_pixel_multiply - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT)); |
2659 | } else | ||
2660 | I915_WRITE(dpll_md_reg, 0); | ||
2658 | } else { | 2661 | } else { |
2659 | /* write it again -- the BIOS does, after all */ | 2662 | /* write it again -- the BIOS does, after all */ |
2660 | I915_WRITE(dpll_reg, dpll); | 2663 | I915_WRITE(dpll_reg, dpll); |