--- 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,