diff options
Diffstat (limited to 'src/i830_display.c')
-rw-r--r-- | src/i830_display.c | 17 |
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) | |