--- xf86-video-ati-6.6.192/src/radeon_display.c.dotclock-filter 2007-05-20 17:20:41.000000000 -0400 +++ xf86-video-ati-6.6.192/src/radeon_display.c 2007-06-27 11:07:55.000000000 -0400 @@ -222,9 +222,15 @@ { MonPtr mon = pScrn->monitor; xf86MonPtr ddc = mon->DDC; - int i; + int i, clock; - if (flag) { /* HSync */ + (void)flag; + + clock = ddc->det_mon[i].section.ranges.max_clock * 1000; + if (clock < pScrn->monitor->maxPixClock || !pScrn->monitor->maxPixClock) + pScrn->monitor->maxPixClock = clock; + + if (pScrn->monitor->nHsync <= 0) { for (i = 0; i < 4; i++) { if (ddc->det_mon[i].type == DS_RANGES) { mon->nHsync = 1; @@ -270,7 +276,8 @@ i++; } mon->nHsync = i; - } else { /* Vrefresh */ + } + if (pScrn->monitor->nVrefresh <= 0) { for (i = 0; i < 4; i++) { if (ddc->det_mon[i].type == DS_RANGES) { mon->nVrefresh = 1; --- xf86-video-ati-6.6.192/src/radeon_driver.c.dotclock-filter 2007-05-20 17:20:14.000000000 -0400 +++ xf86-video-ati-6.6.192/src/radeon_driver.c 2007-06-27 11:08:47.000000000 -0400 @@ -2115,10 +2115,7 @@ * additional way to auto-detect sync ranges if they haven't * been added to XF86Config manually. */ - if (pScrn->monitor->nHsync <= 0) - RADEONSetSyncRangeFromEdid(pScrn, 1); - if (pScrn->monitor->nVrefresh <= 0) - RADEONSetSyncRangeFromEdid(pScrn, 0); + RADEONSetSyncRangeFromEdid(pScrn, 0); } /* Get mode information */