diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/i830_display.c | 20 | ||||
-rw-r--r-- | src/i830_driver.c | 18 | ||||
-rw-r--r-- | src/i830_modes.c | 5 |
3 files changed, 20 insertions, 23 deletions
diff --git a/src/i830_display.c b/src/i830_display.c index b26c09f6..7b96b3a7 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -482,8 +482,9 @@ i830PipeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode, int pipe) dpll |= DPLL_DVO_HIGH_SPEED; /* Save the data order, since I don't know what it should be set to. */ - dvo = INREG(DVOB) & (DVO_PRESERVE_MASK | DVO_DATA_ORDER_GBRG); - dvo |= DVO_DATA_ORDER_FP | DVO_BORDER_ENABLE; + dvo = INREG(DVOC) & (DVO_PRESERVE_MASK | DVO_DATA_ORDER_GBRG); + dvo |= DVO_ENABLE; + dvo |= DVO_DATA_ORDER_FP | DVO_BORDER_ENABLE | DVO_BLANK_ACTIVE_HIGH; if (pipe == 1) dvo |= DVO_PIPE_B_SELECT; @@ -493,10 +494,7 @@ i830PipeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode, int pipe) if (pMode->Flags & V_PVSYNC) dvo |= DVO_VSYNC_ACTIVE_HIGH; - if (IS_I865G(pI830)) - dvo |= DVO_OUTPUT_SOURCE_SIZE_PIXELS; - - OUTREG(DVOB, dvo & ~DVO_ENABLE); + OUTREG(DVOC, dvo & ~DVO_ENABLE); } if (is_sdvo) { @@ -683,12 +681,12 @@ i830PipeSetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode, int pipe) OUTREG(ADPA, adpa); if (is_dvo) { - OUTREG(DVOB_SRCDIM, (pMode->HDisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + /*OUTREG(DVOB_SRCDIM, (pMode->HDisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + (pMode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/ + OUTREG(DVOC_SRCDIM, (pMode->HDisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | (pMode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT)); - /* OUTREG(DVOC_SRCDIM, (pMode->HDisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | - (pMode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT)); */ - OUTREG(DVOB, dvo); - /* OUTREG(DVOC, dvoc); */ + /*OUTREG(DVOB, dvo);*/ + OUTREG(DVOC, dvo); } if (is_sdvo) { diff --git a/src/i830_driver.c b/src/i830_driver.c index 0f472b1c..7815c574 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -1087,18 +1087,12 @@ I830SetupOutputBusses(ScrnInfoPtr pScrn) I830I2CInit(pScrn, &pI830->output[i].pDDCBus, GPIOD, "DVODDC_D"); I830I2CInit(pScrn, &pI830->output[i].pI2CBus, GPIOE, "DVOI2C_E"); - /* if we are on an i2C bus > 0 and we see a monitor - try to - * find a controller chip - */ - if (pI830->output[i].MonInfo) { - int ret; - ret = I830I2CDetectDVOControllers(pScrn, pI830->output[i].pI2CBus, - &pI830->output[i].i2c_drv); - if (ret==TRUE) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Found i2c %s on %08lX\n", - pI830->output[i].i2c_drv->modulename, - pI830->output[i].pI2CBus->DriverPrivate.uval); - } + ret = I830I2CDetectDVOControllers(pScrn, pI830->output[i].pI2CBus, + &pI830->output[i].i2c_drv); + if (ret == TRUE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Found i2c %s on %08lX\n", + pI830->output[i].i2c_drv->modulename, + pI830->output[i].pI2CBus->DriverPrivate.uval); } i++; diff --git a/src/i830_modes.c b/src/i830_modes.c index e1d8570b..1a572d16 100644 --- a/src/i830_modes.c +++ b/src/i830_modes.c @@ -729,6 +729,11 @@ I830ReprobePipeModeList(ScrnInfoPtr pScrn, int pipe) output_index = i; } break; + case I830_OUTPUT_DVO: + if (outputs & PIPE_DFP && pI830->output[i].i2c_drv != NULL) { + output_index = i; + } + break; case I830_OUTPUT_SDVO: if (outputs & PIPE_DFP && pI830->output[i].sdvo_drv != NULL) |