|
|
ef56a4f |
diff -up xf86-video-ati-6.7.196/src/radeon_output.c.jx xf86-video-ati-6.7.196/src/radeon_output.c
|
|
|
ef56a4f |
--- xf86-video-ati-6.7.196/src/radeon_output.c.jx 2007-11-14 15:21:22.000000000 -0500
|
|
|
ef56a4f |
+++ xf86-video-ati-6.7.196/src/radeon_output.c 2007-11-14 15:22:39.000000000 -0500
|
|
|
ef56a4f |
@@ -278,62 +278,7 @@ RADEONDisplayDDCConnected(ScrnInfoPtr pS
|
|
|
bd94235 |
DDCReg = radeon_output->DDCReg;
|
|
|
bd94235 |
|
|
|
bd94235 |
/* Read and output monitor info using DDC2 over I2C bus */
|
|
|
bd94235 |
- if (radeon_output->pI2CBus && info->ddc2 && (DDCReg != RADEON_LCD_GPIO_MASK) && (DDCReg != RADEON_MDGPIO_EN_REG)) {
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) &
|
|
|
bd94235 |
- (CARD32)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1));
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- /* For some old monitors (like Compaq Presario FP500), we need
|
|
|
bd94235 |
- * following process to initialize/stop DDC
|
|
|
bd94235 |
- */
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
|
|
|
bd94235 |
- for (j = 0; j < 3; j++) {
|
|
|
bd94235 |
- OUTREG(DDCReg,
|
|
|
bd94235 |
- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
|
|
|
bd94235 |
- usleep(13000);
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- OUTREG(DDCReg,
|
|
|
bd94235 |
- INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
|
|
|
bd94235 |
- for (i = 0; i < 10; i++) {
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
- if (INREG(DDCReg) & RADEON_GPIO_Y_1)
|
|
|
bd94235 |
- break;
|
|
|
bd94235 |
- }
|
|
|
bd94235 |
- if (i == 10) continue;
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
- OUTREG(DDCReg,
|
|
|
bd94235 |
- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
|
|
|
bd94235 |
- usleep(15000);
|
|
|
ef56a4f |
-
|
|
|
ef56a4f |
- MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, radeon_output->pI2CBus);
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
- OUTREG(DDCReg,
|
|
|
bd94235 |
- INREG(DDCReg) & ~(RADEON_GPIO_EN_1));
|
|
|
bd94235 |
- for (i = 0; i < 5; i++) {
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
- if (INREG(DDCReg) & RADEON_GPIO_Y_1)
|
|
|
bd94235 |
- break;
|
|
|
bd94235 |
- }
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
- OUTREG(DDCReg,
|
|
|
bd94235 |
- INREG(DDCReg) & ~(RADEON_GPIO_EN_0));
|
|
|
bd94235 |
- usleep(15000);
|
|
|
bd94235 |
-
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1);
|
|
|
bd94235 |
- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0);
|
|
|
bd94235 |
- usleep(15000);
|
|
|
ef56a4f |
- if (MonInfo) break;
|
|
|
bd94235 |
- }
|
|
|
bd94235 |
- } else if (radeon_output->pI2CBus && info->ddc2 && ((DDCReg == RADEON_LCD_GPIO_MASK) || (DDCReg == RADEON_MDGPIO_EN_REG))) {
|
|
|
bd94235 |
+ if (radeon_output->pI2CBus && info->ddc2) {
|
|
|
ef56a4f |
MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, radeon_output->pI2CBus);
|
|
|
bd94235 |
} else {
|
|
|
bd94235 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "DDC2/I2C is not properly initialized\n");
|