--- xf86-video-ati-6.6.1/src/radeon_driver.c.mtdriver 2006-08-24 18:52:37.000000000 -0400
+++ xf86-video-ati-6.6.1/src/radeon_driver.c 2006-08-24 18:58:09.000000000 -0400
@@ -3271,6 +3271,7 @@ static DisplayModePtr RADEONDDCModes(Scr
int j, tmp;
char stmp[32];
xf86MonPtr ddc = pScrn->monitor->DDC;
+ int preferred = PREFERRED_TIMING_MODE(ddc->features.msc);
/* Go thru detailed timing table first */
for (j = 0; j < 4; j++) {
@@ -3299,7 +3300,11 @@ static DisplayModePtr RADEONDDCModes(Scr
new->Clock = d_timings->clock / 1000;
new->Flags = (d_timings->interlaced ? V_INTERLACE : 0);
new->status = MODE_OK;
- new->type = M_T_DEFAULT;
+ new->type = M_T_DRIVER;
+ if (preferred) {
+ new->type |= M_T_PREFERRED;
+ preferred = 0;
+ }
if (d_timings->sync == 3) {
switch (d_timings->misc) {
@@ -3337,7 +3342,7 @@ static DisplayModePtr RADEONDDCModes(Scr
new->name = xnfalloc(strlen(p->name) + 1);
strcpy(new->name, p->name);
new->status = MODE_OK;
- new->type = M_T_DEFAULT;
+ new->type = M_T_DRIVER;
count++;
@@ -3369,7 +3374,7 @@ static DisplayModePtr RADEONDDCModes(Scr
new->name = xnfalloc(strlen(p->name) + 1);
strcpy(new->name, p->name);
new->status = MODE_OK;
- new->type = M_T_DEFAULT;
+ new->type = M_T_DRIVER;
count++;
@@ -3706,7 +3711,7 @@ static int RADEONValidateFPModes(ScrnInf
new->Clock = info->DotClock;
new->Flags |= RADEON_USE_RMX;
- new->type |= M_T_DEFAULT;
+ new->type |= M_T_DRIVER;
new->next = NULL;
new->prev = last;
@@ -3888,6 +3893,9 @@ static int RADEONValidateMergeModes(Scrn
* 'stretched' from their native mode.
*/
if (info->MergeType == MT_CRT && !info->ddc_mode) {
+
+ if (pScrn->monitor->DDC)
+ xf86SetDDCproperties(pScrn, pScrn->monitor->DDC);
modesFound =
xf86ValidateModes(pScrn,
@@ -4154,6 +4162,9 @@ static Bool RADEONPreInitModes(ScrnInfoP
*/
if (info->DisplayType == MT_CRT && !info->ddc_mode) {
+ if (pScrn->monitor->DDC)
+ xf86SetDDCproperties(pScrn, pScrn->monitor->DDC);
+
modesFound =
xf86ValidateModes(pScrn,
pScrn->monitor->Modes,