Two questions on radeon driver

Henry Zhao Henry.Zhao at Sun.COM
Fri May 26 17:46:51 PDT 2006


(1) In Merged FB mode, merged modes have negative refresh rates, see
     [bug 6966].

     When using GNOME/JDS, where, if MergedFB is used, you
     will find negative refresh rates in desktop resolution selection
     screen, resulting in not being able to select resolutions.

     The cause of the problem seems to be inappropriate setting of clock
     for the merged mode, as seen in this portion of code

     mode->Clock = (((i->Clock >> 3) + i->HTotal) << 16) |
                   ((j->Clock >> 2) + j->HTotal);
     mode->Clock ^= ((i->VTotal << 19) | (j->VTotal << 3));

     in RADEONCopyModeNLink() of radeon_mergedfb.c, where i and j
     represent two modes to be merged, and the clock generated is a bogus
     negative number. Can anyone tell me what this calculation means, and
     where it comes from, this code starts showing up in version 1.5.
     The clock is set to 0 prior to that.

     For a testing (in clone mode), using

     mode->Clock = i->Clock

     seems to fix the problem.

(2) In RADEONQueryConnectedMonitors() of radeon_driver.c, when
     monitor layout is found in config file, if the second head is
     defined as CRT, then port info for both heads have to be
     re-initialized as seen in:


     if (pRADEONEnt->PortInfo[1].MonType == MT_CRT) {
             pRADEONEnt->PortInfo[1].DACType = DAC_PRIMARY;
             pRADEONEnt->PortInfo[1].TMDSType = TMDS_UNKNOWN;
             pRADEONEnt->PortInfo[1].DDCType = DDC_VGA;
             pRADEONEnt->PortInfo[1].ConnectorType = CONNECTOR_CRT;
             pRADEONEnt->PortInfo[0].DACType = DAC_TVDAC;
             pRADEONEnt->PortInfo[0].TMDSType = TMDS_UNKNOWN;
             pRADEONEnt->PortInfo[0].DDCType = DDC_NONE_DETECTED;
             pRADEONEnt->PortInfo[0].ConnectorType =
             pRADEONEnt->PortInfo[0].MonType+1;
             pRADEONEnt->PortInfo[0].MonInfo = NULL;
     }

     Why this should affect the primary head ?



-Henry




More information about the xorg mailing list