Use the software method to switch different refresh rate for LVDS --- drivers/gpu/drm/i915/intel_display.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6/drivers/gpu/drm/i915/intel_display.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/i915/intel_display.c 2009-12-28 13:42:18.000000000 +0800 +++ linux-2.6/drivers/gpu/drm/i915/intel_display.c 2009-12-28 22:05:12.000000000 +0800 @@ -3230,7 +3230,7 @@ intel_crtc->lowfreq_avail = true; if (HAS_PIPE_CXSR(dev)) { DRM_DEBUG_KMS("enabling CxSR downclocking\n"); - pipeconf |= PIPECONF_CXSR_DOWNCLOCK; + pipeconf &= ~PIPECONF_CXSR_DOWNCLOCK; } } else { I915_WRITE(fp_reg + 4, fp); @@ -3928,7 +3928,7 @@ if (!dev_priv->lvds_downclock_avail) return; - if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) { + if ((dpll & DISPLAY_RATE_SELECT_FPA1)) { DRM_DEBUG_DRIVER("upclocking LVDS\n"); /* Unlock panel regs */ @@ -3971,7 +3971,7 @@ * Since this is called by a timer, we should never get here in * the manual case. */ - if (!HAS_PIPE_CXSR(dev) && intel_crtc->lowfreq_avail) { + if (intel_crtc->lowfreq_avail) { DRM_DEBUG_DRIVER("downclocking LVDS\n"); /* Unlock panel regs */