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: