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");