xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Mon Feb 18 18:17:55 PST 2008


 src/radeon_atombios.c |   45 ++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 7 deletions(-)

New commits:
commit 830d29e8b280c11e798fb5bf5278bf24ecbac7bf
Author: Alex Deucher <alex at cube.(none)>
Date:   Mon Feb 18 21:17:12 2008 -0500

    ATOM: fix RS6xx connector table parsing and fix some warnings

diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 81d908f..ddd332f 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1442,6 +1442,7 @@ RADEONLookupGPIOLineForDDC(ScrnInfoPtr pScrn, CARD8 id)
     RADEONI2CBusRec i2c;
     CARD8 crev, frev;
 
+    memset(&i2c, 0, sizeof(RADEONI2CBusRec));
     i2c.valid = FALSE;
 
     atomDataPtr = info->atomBIOS->atomDataPtr;
@@ -1468,6 +1469,25 @@ RADEONLookupGPIOLineForDDC(ScrnInfoPtr pScrn, CARD8 id)
     i2c.get_data_mask = (1 <<  gpio.ucDataY_Shift);
     i2c.valid = TRUE;
 
+#if 0
+    ErrorF("mask_clk_reg: 0x%x\n", gpio.usClkMaskRegisterIndex * 4);
+    ErrorF("mask_data_reg: 0x%x\n", gpio.usDataMaskRegisterIndex * 4);
+    ErrorF("put_clk_reg: 0x%x\n", gpio.usClkEnRegisterIndex * 4);
+    ErrorF("put_data_reg: 0x%x\n", gpio.usDataEnRegisterIndex * 4);
+    ErrorF("get_clk_reg: 0x%x\n", gpio.usClkY_RegisterIndex * 4);
+    ErrorF("get_data_reg: 0x%x\n", gpio.usDataY_RegisterIndex * 4);
+    ErrorF("other_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4);
+    ErrorF("other_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4);
+    ErrorF("mask_clk_mask: %d\n", gpio.ucClkMaskShift);
+    ErrorF("mask_data_mask: %d\n", gpio.ucDataMaskShift);
+    ErrorF("put_clk_mask: %d\n", gpio.ucClkEnShift);
+    ErrorF("put_data_mask: %d\n", gpio.ucDataEnShift);
+    ErrorF("get_clk_mask: %d\n", gpio.ucClkY_Shift);
+    ErrorF("get_data_mask: %d\n", gpio.ucDataY_Shift);
+    ErrorF("other_clk_mask: %d\n", gpio.ucClkA_Shift);
+    ErrorF("other_data_mask: %d\n", gpio.ucDataA_Shift);
+#endif
+
     return i2c;
 }
 
@@ -1479,7 +1499,7 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
     unsigned short size;
     atomDataTablesPtr atomDataPtr;
     ATOM_CONNECTOR_OBJECT_TABLE *con_obj;
-    int i, j, ddc_line;
+    int i, j, ddc_line = 0;
 
     atomDataPtr = info->atomBIOS->atomDataPtr;
     if (!rhdAtomGetTableRevisionAndSize((ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->Object_Header), &crev, &frev, &size))
@@ -1725,7 +1745,12 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
 
 	info->BiosConnector[i].valid = TRUE;
 	info->BiosConnector[i].output_id = ci.sucI2cId.sbfAccess.bfI2C_LineMux;
-	info->BiosConnector[i].devices = (1 << i);
+	if (info->IsIGP && (i == ATOM_DEVICE_DFP2_INDEX))
+	    info->BiosConnector[i].devices = (1 << ATOM_DEVICE_DFP3_INDEX);
+	else if (info->IsIGP && (i == ATOM_DEVICE_DFP3_INDEX))
+	    info->BiosConnector[i].devices = (1 << ATOM_DEVICE_DFP2_INDEX);
+	else
+	    info->BiosConnector[i].devices = (1 << i);
 	info->BiosConnector[i].ConnectorType = ci.sucConnectorInfo.sbfAccess.bfConnectorType;
 	info->BiosConnector[i].DACType = ci.sucConnectorInfo.sbfAccess.bfAssociatedDAC;
 
@@ -1740,11 +1765,17 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
 
 	if (i == ATOM_DEVICE_DFP1_INDEX)
 	    info->BiosConnector[i].TMDSType = TMDS_INT;
-	else if (i == ATOM_DEVICE_DFP2_INDEX)
-	    info->BiosConnector[i].TMDSType = TMDS_EXT;
-	else if (i == ATOM_DEVICE_DFP3_INDEX)
-	    info->BiosConnector[i].TMDSType = TMDS_LVTMA;
-	else
+	else if (i == ATOM_DEVICE_DFP2_INDEX) {
+	    if (info->IsIGP)
+		info->BiosConnector[i].TMDSType = TMDS_LVTMA;
+	    else
+		info->BiosConnector[i].TMDSType = TMDS_EXT;
+	} else if (i == ATOM_DEVICE_DFP3_INDEX) {
+	    if (info->IsIGP)
+		info->BiosConnector[i].TMDSType = TMDS_EXT;
+	    else
+		info->BiosConnector[i].TMDSType = TMDS_LVTMA;
+	} else
 	    info->BiosConnector[i].TMDSType = TMDS_NONE;
 
 	/* Always set the connector type to VGA for CRT1/CRT2. if they are


More information about the xorg-commit mailing list