Make DVO code light up my sil164-based DVI output, when already set up by BIOS.
This commit is contained in:
parent
23a0ee73bc
commit
f5a01a2ef0
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue