summaryrefslogtreecommitdiff
path: root/src/i830_display.c
diff options
context:
space:
mode:
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) |