radeon_driver.c | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) Index: src/radeon_driver.c =================================================================== RCS file: /cvs/xorg/driver/xf86-video-ati/src/radeon_driver.c,v retrieving revision 1.83 diff -u -d -p -r1.83 radeon_driver.c --- src/radeon_driver.c 14 Dec 2005 19:41:28 -0000 1.83 +++ src/radeon_driver.c 3 Jan 2006 21:17:45 -0000 @@ -8829,6 +8829,7 @@ RADEONGetMergedFBOptions(ScrnInfoPtr pSc char *default_vrefresh = "43-72"; Bool val; Bool default_range = FALSE; + Bool copy_range = FALSE; static const char *mybadparm = "\"%s\" is is not a valid parameter for option \"%s\"\n"; if (info->FBDev == TRUE) { @@ -8854,9 +8855,16 @@ RADEONGetMergedFBOptions(ScrnInfoPtr pSc xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to detect secondary monitor, MergedFB/Clone mode disabled\n"); } else if (!pRADEONEnt->MonInfo2) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Failed to detect secondary monitor DDC, default HSync and VRefresh used\n"); - default_range = TRUE; + if (info->DisplayType == MT_LCD) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Failed to detect secondary monitor DDC, assuming same " + "as panel\n"); + copy_range = TRUE; + } else { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Failed to detect secondary monitor DDC, default HSync and VRefresh used\n"); + default_range = TRUE; + } } if (xf86GetOptValBool(info->Options, OPTION_MERGEDFB, &val)) { @@ -9023,7 +9031,16 @@ RADEONGetMergedFBOptions(ScrnInfoPtr pSc if (default_range) { RADEONStrToRanges(info->CRT2pScrn->monitor->hsync, default_hsync, MAX_HSYNC); RADEONStrToRanges(info->CRT2pScrn->monitor->vrefresh, default_vrefresh, MAX_VREFRESH); + } else if (copy_range) { + info->CRT2pScrn->monitor->nHsync = info->monitor->nHsync; + info->CRT2pScrn->monitor->nVrefresh = info->monitor->nVrefresh; + memcpy(info->CRT2pScrn->monitor->hsync, info->monitor->hsync, + info->monitor->nHsync * sizeof(info->monitor->hsync[0])); + memcpy(info->CRT2pScrn->monitor->vrefresh, + info->monitor->vrefresh, info->monitor->nVrefresh * + sizeof(info->monitor->vrefresh[0])); } + if(info->CRT2HSync) { info->CRT2pScrn->monitor->nHsync = RADEONStrToRanges(info->CRT2pScrn->monitor->hsync, info->CRT2HSync, MAX_HSYNC);