diff --git a/src/i830_lvds.c b/src/i830_lvds.c index 33b4f26..a6be155 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)) { + 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. @@ -742,7 +741,6 @@ i830_lvds_prepare(xf86OutputPtr output) lvds = INREG(LVDS); - i830_lvds_dpms(output, DPMSModeOff); /* * ->prepare will be called after the CRTC is off but before * we set the mode, so program the PFIT regs here. @@ -751,6 +749,7 @@ i830_lvds_prepare(xf86OutputPtr output) OUTREG(LVDS, lvds | LVDS_BORDER_ENABLE); else OUTREG(LVDS, lvds & (~LVDS_BORDER_ENABLE)); + i830_lvds_dpms(output, DPMSModeOff); } static void @@ -767,8 +766,6 @@ i830_lvds_mode_set(xf86OutputPtr output, DisplayModePtr mode, */ 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); } /** @@ -1110,6 +1107,9 @@ i830_lvds_set_property(xf86OutputPtr output, Atom property, if (value->type != XA_ATOM || value->format != 32 || value->size != 1) return FALSE; + if (!IS_I9XX(pI830)) + return FALSE; + memcpy(&atom, value->data, 4); name = NameForAtom(atom);