diff -urN xf86-video-ati-orig/src/atipciids.h xf86-video-ati/src/atipciids.h --- xf86-video-ati-orig/src/atipciids.h 2007-06-18 13:04:41.000000000 +0800 +++ xf86-video-ati/src/atipciids.h 2007-06-18 13:35:36.000000000 +0800 @@ -37,7 +37,7 @@ #define PCI_VENDOR_ATI 0x1002 #define PCI_VENDOR_AMD 0x1022 #define PCI_VENDOR_DELL 0x1028 - +#define PCI_VENDOR_SUN 0x108e /* ATI */ #define PCI_CHIP_RV380_3150 0x3150 #define PCI_CHIP_RV380_3151 0x3151 diff -urN xf86-video-ati-orig/src/radeon_display.c xf86-video-ati/src/radeon_display.c --- xf86-video-ati-orig/src/radeon_display.c 2007-06-18 13:04:39.000000000 +0800 +++ xf86-video-ati/src/radeon_display.c 2007-06-18 13:45:21.000000000 +0800 @@ -1244,9 +1244,11 @@ if (pRADEONEnt->PortInfo[0]->MonType == MT_UNKNOWN || pRADEONEnt->PortInfo[1]->MonType == MT_UNKNOWN) { - - if ((!pRADEONEnt->HasCRTC2) && (pRADEONEnt->PortInfo[0]->MonType == MT_UNKNOWN)) { - if((pRADEONEnt->PortInfo[0]->MonType = RADEONDisplayDDCConnected(pScrn, DDC_DVI, + if(info->DefMonTypeDFP){ + /*set monitor type to DFP and use hard-coded EDID in VBIOS to set mode*/ + pRADEONEnt->PortInfo[0].MonType = MT_DFP; + } + else if((pRADEONEnt->PortInfo[0]->MonType = RADEONDisplayDDCConnected(pScrn, DDC_DVI, pRADEONEnt->PortInfo[0]))); else if((pRADEONEnt->PortInfo[0]->MonType = RADEONDisplayDDCConnected(pScrn, DDC_VGA, pRADEONEnt->PortInfo[0]))); diff -urN xf86-video-ati-orig/src/radeon_driver.c xf86-video-ati/src/radeon_driver.c --- xf86-video-ati-orig/src/radeon_driver.c 2007-06-18 13:04:41.000000000 +0800 +++ xf86-video-ati/src/radeon_driver.c 2007-06-18 13:46:20.000000000 +0800 @@ -1550,6 +1550,7 @@ info->IsIGP = FALSE; info->IsDellServer = FALSE; info->HasSingleDAC = FALSE; + info->DefMonTypeDFP= FALSE; switch (info->Chipset) { case PCI_CHIP_RADEON_LY: case PCI_CHIP_RADEON_LZ: @@ -1560,6 +1561,11 @@ case PCI_CHIP_RN50_515E: /* RN50 is based on the RV100 but 3D isn't guaranteed to work. YMMV. */ case PCI_CHIP_RN50_5969: pRADEONEnt->HasCRTC2 = FALSE; + if ((info->PciInfo->subsysVendor == PCI_VENDOR_SUN) && + (info->PciInfo->subsysCard == 0x4133)){ + info->DefMonTypeDFP = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Sun server detected, force default monitor type to DFP\n"); + } case PCI_CHIP_RV100_QY: case PCI_CHIP_RV100_QZ: info->ChipFamily = CHIP_FAMILY_RV100; diff -urN xf86-video-ati-orig/src/radeon.h xf86-video-ati/src/radeon.h --- xf86-video-ati-orig/src/radeon.h 2007-06-18 13:04:40.000000000 +0800 +++ xf86-video-ati/src/radeon.h 2007-06-18 13:35:36.000000000 +0800 @@ -450,6 +450,8 @@ Bool ddc_mode; /* Validate mode by matching exactly * the modes supported in DDC data */ + Bool DefMonTypeDFP; /* set default monitor type as DFP and use hard-coded EDID in VBIOS + set mode*/ Bool R300CGWorkaround; /* EDID or BIOS values for FPs */