[Bug 1514] (radeon) monitor resolution/frequency is locked

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Oct 13 05:39:16 PDT 2004


Please do not reply to this email: if you want to comment on the bug, go to          
the URL shown below and enter yourcomments there.   
 
https://freedesktop.org/bugzilla/show_bug.cgi?id=1514        
   




------- Additional Comments From mharris at www.linux.org.uk  2004-10-13 05:39 -------
RADEONQueryConnectedMonitors() calls RADEONGetConnectorInfoFromBIOS() which
fails with FALSE in the following code for a LegacyBIOS:

    } else {
        if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x50))) {
            for (i = 1; i < 4; i++) {

                if (!RADEON_BIOS8(tmp + i*2) && i > 1) break; /* end of table */

                tmp0 = RADEON_BIOS16(tmp + i*2);
                if (((tmp0 >> 12) & 0x1f) == 0) continue; /* no connector */

                /* internal DDC_DVI port will get assigned to PortInfo[0], or if
there is no DDC_DVI (like in some IGPs). */
                tmp1 = ((((tmp0 >> 8) & 0xf) == DDC_DVI) || (tmp1 == 1)) ? 0 :
1; /* determine port info index */

                pRADEONEnt->PortInfo[tmp1].DDCType        = (tmp0 >> 8) & 0x0f;
                if (pRADEONEnt->PortInfo[tmp1].DDCType > DDC_CRT2)
pRADEONEnt->PortInfo[tmp1].DDCType = DDC_NONE_DETECTED;
                pRADEONEnt->PortInfo[tmp1].DACType        = (tmp0 & 0x01) ?
DAC_TVDAC : DAC_PRIMARY;
                pRADEONEnt->PortInfo[tmp1].ConnectorType  = (tmp0 >> 12) & 0x0f;
                if (pRADEONEnt->PortInfo[tmp1].ConnectorType >
CONNECTOR_UNSUPPORTED) pRADEONEnt->PortInfo[tmp1].ConnectorType =
CONNECTOR_UNSUPPORTED;
                pRADEONEnt->PortInfo[tmp1].TMDSType       = ((tmp0 >> 4) & 0x01)
? TMDS_EXT : TMDS_INT;

                /* some sanity checks */
                if (((pRADEONEnt->PortInfo[tmp1].ConnectorType !=
CONNECTOR_DVI_D) &&
                     (pRADEONEnt->PortInfo[tmp1].ConnectorType !=
CONNECTOR_DVI_I)) &&
                    pRADEONEnt->PortInfo[tmp1].TMDSType == TMDS_INT)
                    pRADEONEnt->PortInfo[tmp1].TMDSType = TMDS_UNKNOWN;

                xf86DrvMsg(0, X_INFO, "Connector%d: DDCType-%d, DACType-%d,
TMDSType-%d, ConnectorType-%d\n",
                           tmp1, pRADEONEnt->PortInfo[tmp1].DDCType,
pRADEONEnt->PortInfo[tmp1].DACType,
                           pRADEONEnt->PortInfo[tmp1].TMDSType,
pRADEONEnt->PortInfo[tmp1].ConnectorType);
            }
        } else {
            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No Connector Info Table
found!\n");
            return FALSE;
        }


This causes the Connector Info Table message we see in the log file to
get output.  Back in RADEONQueryConnectedMonitors(), the following is
what is executed for this block above:

    if (!RADEONGetConnectorInfoFromBIOS(pScrn)) {
        /* Below is the most common setting, but may not be true */
        pRADEONEnt->PortInfo[0].MonType = MT_UNKNOWN;
        pRADEONEnt->PortInfo[0].MonInfo = NULL;
        pRADEONEnt->PortInfo[0].DDCType = DDC_DVI;
        pRADEONEnt->PortInfo[0].DACType = DAC_TVDAC;
        pRADEONEnt->PortInfo[0].TMDSType = TMDS_INT;
        pRADEONEnt->PortInfo[0].ConnectorType = CONNECTOR_DVI_D;

        pRADEONEnt->PortInfo[1].MonType = MT_UNKNOWN;
        pRADEONEnt->PortInfo[1].MonInfo = NULL;
        pRADEONEnt->PortInfo[1].DDCType = DDC_VGA;
        pRADEONEnt->PortInfo[1].DACType = DAC_PRIMARY;
        pRADEONEnt->PortInfo[1].TMDSType = TMDS_EXT;
        pRADEONEnt->PortInfo[1].ConnectorType = CONNECTOR_CRT;
    }


The comment there "Below is the most common setting, but may not be true"
definitely seems to not be true for a Radeon 7200, as it has one single
head, and is not DVI.        
   
   
--         
Configure bugmail: https://freedesktop.org/bugzilla/userprefs.cgi?tab=email       
   
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


More information about the xorg-bugzilla-noise mailing list