summaryrefslogtreecommitdiff
path: root/src/i830_display.c
diff options
context:
space:
mode:
authorPaul Menzel <paulepanter@users.sourceforge.net>2009-06-07 22:08:05 +0200
committerPaul Menzel <paulepanter@users.sourceforge.net>2009-06-07 22:08:05 +0200
commit5cdafb61c72cfc9c0daddcb2dae9b981e8f5d8b8 (patch)
tree8acb61c61b70d126c2f2b965d5a6ac3898968fb1 /src/i830_display.c
parentbe5e8111a0b6b5ff3d643bea6f8728637ae4d070 (diff)
parenta7690d9f0b9a3e0628f51635ba78117b614edf1b (diff)
downloadxf86-video-intel-frc-debian-unstable-with-frc-patches.tar.gz
xf86-video-intel-frc-debian-unstable-with-frc-patches.tar.bz2
Merge branch 'upstream-unstable' into dufdebian-unstable-with-frc-patches
Diffstat (limited to 'src/i830_display.c')
-rw-r--r--src/i830_display.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/i830_display.c b/src/i830_display.c
index dd1310fa..51230f12 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -99,9 +99,9 @@ struct intel_limit {
#define I8XX_P2_LVDS_FAST 7
#define I8XX_P2_SLOW_LIMIT 165000
-#define I9XX_DOT_MIN 20000
+#define I9XX_DOT_MIN 12000 /* allow for PAL modes */
#define I9XX_DOT_MAX 400000
-#define I9XX_VCO_MIN 1400000
+#define I9XX_VCO_MIN 1000000 /* allow for PAL modes */
#define I9XX_VCO_MAX 2800000
#define IGD_VCO_MIN 1700000
#define IGD_VCO_MAX 3500000
@@ -1389,6 +1389,14 @@ static Bool
i830_crtc_mode_fixup(xf86CrtcPtr crtc, DisplayModePtr mode,
DisplayModePtr adjusted_mode)
{
+ if (mode->Flags & V_INTERLACE) {
+ mode->CrtcVDisplay = adjusted_mode->CrtcVDisplay = mode->VDisplay;
+ mode->CrtcVSyncStart = adjusted_mode->CrtcVSyncStart = mode->VSyncStart;
+ mode->CrtcVSyncEnd = adjusted_mode->CrtcVSyncEnd = mode->VSyncEnd;
+ mode->CrtcVBlankStart = adjusted_mode->CrtcVBlankStart = mode->CrtcVDisplay;
+ mode->CrtcVBlankEnd = adjusted_mode->CrtcVBlankEnd = mode->VTotal;
+ mode->CrtcVTotal = adjusted_mode->CrtcVTotal = mode->VTotal;
+ }
return TRUE;
}
@@ -1891,6 +1899,11 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
if (!DSPARB_HWCONTROL(pI830))
i830_update_dsparb(pScrn);
+ if (adjusted_mode->Flags & V_INTERLACE) {
+ pipeconf |= PIPECONF_INTERLACE_W_FIELD_INDICATION;
+ } else {
+ pipeconf &= ~PIPECONF_INTERLACE_W_FIELD_INDICATION;
+ }
OUTREG(htot_reg, (adjusted_mode->CrtcHDisplay - 1) |
((adjusted_mode->CrtcHTotal - 1) << 16));
OUTREG(hblank_reg, (adjusted_mode->CrtcHBlankStart - 1) |