diff options
author | Eric Anholt <eric@anholt.net> | 2006-11-06 18:26:48 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2006-11-06 18:28:55 -0800 |
commit | 94a3731c2b4f2ea2e696a8c87dccc0d214d41e8e (patch) | |
tree | a8607cf7a04c0fc3b62a604884204b742d4450dc /src/i830_display.c | |
parent | 27df2ff7908ea7ea2943a5f3445e12dbc24d97c9 (diff) |
Move PFIT_CONTROL disable for G965 up before post_set_mode.
Also, remove setting of some other random registers that appears to have
been spammed in at the same time, and don't try to disable on the I830, before
this register existed.
Diffstat (limited to 'src/i830_display.c')
-rw-r--r-- | src/i830_display.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/i830_display.c b/src/i830_display.c index e36b5efc..672bc533 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -609,21 +609,20 @@ i830PipeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode, int pipe, OUTREG(fp_reg, fp); OUTREG(dpll_reg, dpll); + /* + * If the panel fitter is stuck on our pipe, turn it off. + * The LVDS output will set it as necessary in post_set_mode. + */ + if (!IS_I830(pI830)) { + if (((INREG(PFIT_CONTROL) >> 29) & 0x3) == pipe) + OUTREG(PFIT_CONTROL, 0); + } + for (i = 0; i < pI830->num_outputs; i++) { if (pI830->output[i].pipe == pipe) pI830->output[i].post_set_mode(pScrn, &pI830->output[i], pMode); } - /* - * If the panel fitter is stuck on our pipe, turn it off - * the LVDS output will whack it correctly if it needs it - */ - if (((INREG(PFIT_CONTROL) >> 29) & 0x3) == pipe) - OUTREG(PFIT_CONTROL, 0); - - OUTREG(PFIT_PGM_RATIOS, 0x10001000); - OUTREG(DSPARB, (47 << 0) | (95 << 7)); - OUTREG(htot_reg, htot); OUTREG(hblank_reg, hblank); OUTREG(hsync_reg, hsync); |