[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#473838: (no subject)



On Wed, Apr  2, 2008 at 13:20:58 +0200, Soenke wrote:

> Hi Julien,
> 
> thanks for the quick reply and the patch. Unfortunately, it did not solve the problem.
> I attached the missing Xorg.log, once from a hanging server with the rc2 driver and once with
> the patch applied to 2.3-branch.
> Additionally, I have put in my xorg.conf, which was also missing before.
> 
Thanks for this.  The intel developers are tracking this issue at
http://bugs.freedesktop.org/show_bug.cgi?id=15313
There's another patch attached to that bug, could you try it?
I'll attach it to this message as well.

Cheers,
Julien
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);
 	

Reply to: