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