diff options
author | Alex Deucher <alex@cube.(none)> | 2008-02-28 18:53:55 -0500 |
---|---|---|
committer | Alex Deucher <alex@cube.(none)> | 2008-02-28 18:53:55 -0500 |
commit | ae1c39a9b3e666404d0931679c9078c2e125a8bc (patch) | |
tree | 4f072ddc1c0fd64d7f5333b324222e4649125b74 /src/radeon_atombios.c | |
parent | d8d6c9fe4ae7e1ab67dd041a251e901d97c29ed6 (diff) |
RS6xx: rework output parsing
Turns out it's not as complex as I originially thought.
IGP chips just have non-standard GPIO entires for DDC.
Diffstat (limited to 'src/radeon_atombios.c')
-rw-r--r-- | src/radeon_atombios.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c index 88c220b2..351939e0 100644 --- a/src/radeon_atombios.c +++ b/src/radeon_atombios.c @@ -1745,12 +1745,7 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn) info->BiosConnector[i].valid = TRUE; info->BiosConnector[i].output_id = ci.sucI2cId.sbfAccess.bfI2C_LineMux; - 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].devices = (1 << i); info->BiosConnector[i].ConnectorType = ci.sucConnectorInfo.sbfAccess.bfConnectorType; info->BiosConnector[i].DACType = ci.sucConnectorInfo.sbfAccess.bfAssociatedDAC; @@ -1759,14 +1754,14 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn) (i == ATOM_DEVICE_TV2_INDEX) || (i == ATOM_DEVICE_CV_INDEX)) info->BiosConnector[i].ddc_i2c.valid = FALSE; - else if ((i == ATOM_DEVICE_DFP3_INDEX) && info->IsIGP) { - /* DDIA port uses non-standard gpio entry */ - if (info->BiosConnector[ATOM_DEVICE_DFP2_INDEX].valid) + else if (info->IsIGP) { + /* IGP DFP ports use non-standard gpio entries */ + if ((i == ATOM_DEVICE_DFP2_INDEX) || (i == ATOM_DEVICE_DFP3_INDEX)) info->BiosConnector[i].ddc_i2c = - RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 2); + RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1); else info->BiosConnector[i].ddc_i2c = - RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1); + RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux); } else info->BiosConnector[i].ddc_i2c = RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux); @@ -1775,15 +1770,12 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn) info->BiosConnector[i].TMDSType = TMDS_INT; 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_DDIA; else - info->BiosConnector[i].TMDSType = TMDS_LVTMA; - } else + info->BiosConnector[i].TMDSType = TMDS_EXT; + } else if (i == ATOM_DEVICE_DFP3_INDEX) + 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 |