Blob Blame History Raw
--- 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,