diff --git a/src/i830_lvds.c b/src/i830_lvds.c index 33b4f26..c394b64 100644 --- a/src/i830_lvds.c +++ b/src/i830_lvds.c @@ -542,15 +542,6 @@ i830_lvds_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, adjusted_mode->Clock = dev_priv->panel_fixed_mode->Clock; xf86SetModeCrtc(adjusted_mode, INTERLACE_HALVE_V); - /* Native modes don't need fitting */ - if (adjusted_mode->HDisplay == mode->HDisplay && - adjusted_mode->VDisplay == mode->VDisplay) { - pfit_control = 0; - pfit_pgm_ratios = 0; - border = 0; - goto out; - } - /* Basic panel fitting options */ if (!IS_I965G(pI830)) { if (dev_priv->panel_wants_dither) @@ -560,6 +551,14 @@ i830_lvds_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, PFIT_FILTER_FUZZY; } + /* Native modes don't need fitting */ + if ((adjusted_mode->HDisplay == mode->HDisplay && + adjusted_mode->VDisplay == mode->VDisplay) || !IS_I9XX(pI830)) { + pfit_pgm_ratios = 0; + border = 0; + goto out; + } + /* * Deal with panel fitting options. Figure out how to stretch the image * based on its aspect ratio & the current panel fitting mode. @@ -765,10 +764,9 @@ i830_lvds_mode_set(xf86OutputPtr output, DisplayModePtr mode, /* * PFIT must be enabled/disabled while LVDS is on but pipes are still off */ - OUTREG(PFIT_PGM_RATIOS, dev_priv->pfit_pgm_ratios); + if (dev_priv->pfit_pgm_ratios) + OUTREG(PFIT_PGM_RATIOS, dev_priv->pfit_pgm_ratios); OUTREG(PFIT_CONTROL, dev_priv->pfit_control); - /* It's harmless to turn on the LVDS if it's already on */ - i830_lvds_dpms(output, DPMSModeOn); } /**