File xf86-video-ati-es1000.diff of Package xorg-x11-driver-video

diff -urpw xf86-video-ati-6.9.0/src/radeon.h xf86-video-ati-6.9.0.mod/src/radeon.h
--- xf86-video-ati-6.9.0/src/radeon.h	2008-06-25 02:56:40.000000000 -0400
+++ xf86-video-ati-6.9.0.mod/src/radeon.h	2008-11-11 04:48:29.000000000 -0500
@@ -774,6 +774,7 @@ typedef struct {
 
     int num_gb_pipes;
     Bool has_tcl;
+    int maxHDisplay;
 } RADEONInfoRec, *RADEONInfoPtr;
 
 #define RADEONWaitForFifo(pScrn, entries)				\
diff -urpw xf86-video-ati-6.9.0/src/radeon_driver.c xf86-video-ati-6.9.0.mod/src/radeon_driver.c
--- xf86-video-ati-6.9.0/src/radeon_driver.c	2008-06-23 09:38:42.000000000 -0400
+++ xf86-video-ati-6.9.0.mod/src/radeon_driver.c	2008-11-11 04:48:29.000000000 -0500
@@ -2672,7 +2672,7 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, in
 
     info->IsSecondary  = FALSE;
     info->IsPrimary = FALSE;
-
+    info->maxHDisplay = 0;
     info->pEnt         = xf86GetEntityInfo(pScrn->entityList[pScrn->numEntities - 1]);
     if (info->pEnt->location.type != BUS_PCI) goto fail;
 
diff -urpw xf86-video-ati-6.9.0/src/radeon_modes.c xf86-video-ati-6.9.0.mod/src/radeon_modes.c
--- xf86-video-ati-6.9.0/src/radeon_modes.c	2008-06-09 11:49:42.000000000 -0400
+++ xf86-video-ati-6.9.0.mod/src/radeon_modes.c	2008-11-17 21:29:40.000000000 -0500
@@ -263,7 +263,8 @@ RADEONProbeOutputModes(xf86OutputPtr out
     RADEONOutputPrivatePtr radeon_output = output->driver_private;
     ScrnInfoPtr pScrn = output->scrn;
     RADEONInfoPtr info = RADEONPTR(pScrn);
-    DisplayModePtr	    modes = NULL;
+    DisplayModePtr	    modes = NULL, pMode=NULL;
+    int maxH = 0;
     AtomBiosArgRec atomBiosArg;
     AtomBiosResult atomBiosResult;
 
@@ -304,7 +305,20 @@ RADEONProbeOutputModes(xf86OutputPtr out
 	    }
 	}
     }
-
+ErrorF("cooper, before maxHDisplay = %d\n",info->maxHDisplay);    
+    if (info->ChipFamily == CHIP_FAMILY_RV100)
+    {   
+        pMode = modes; 
+        while (pMode)
+        {
+            if (maxH < pMode->HDisplay)
+                maxH = pMode->HDisplay;
+            pMode = pMode->next;
+        }
+        if ((info->maxHDisplay ==0) || (info->maxHDisplay > maxH))
+            info->maxHDisplay = maxH;
+    }
+ErrorF("cooper, after maxHDisplay = %d\n", info->maxHDisplay);
     return modes;
 }
 
diff -urpw xf86-video-ati-6.9.0/src/radeon_output.c xf86-video-ati-6.9.0.mod/src/radeon_output.c
--- xf86-video-ati-6.9.0/src/radeon_output.c	2008-06-25 02:56:40.000000000 -0400
+++ xf86-video-ati-6.9.0.mod/src/radeon_output.c	2008-11-17 21:28:14.000000000 -0500
@@ -468,9 +468,13 @@ radeon_mode_valid(xf86OutputPtr output,
      * XXX should really do this for all chips by properly computing
      * memory bandwidth and an overhead factor.
      */
-    if (info->ChipFamily == CHIP_FAMILY_RV100 && !pRADEONEnt->HasCRTC2) {
+    if (info->ChipFamily == CHIP_FAMILY_RV100) 
+    {
+ErrorF("cooper, final maxHDisplay = %d\n",info->maxHDisplay);
 	if (xf86ModeBandwidth(pMode, pScrn->bitsPerPixel) > 300)
 	    return MODE_BANDWIDTH;
+        if (pMode->HDisplay > info->maxHDisplay)
+            return MODE_BAD;
     }
 
     if (OUTPUT_IS_TV) {
@@ -2679,6 +2683,7 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
     RADEONInfoPtr info       = RADEONPTR(pScrn);
     RADEONEntPtr pRADEONEnt  = RADEONEntPriv(pScrn);
     xf86OutputPtr output;
+    RADEONBIOSConnector tmpConn;
     char *optstr;
     int i = 0;
     int num_vga = 0;
@@ -2742,6 +2747,24 @@ Bool RADEONSetupConnectors(ScrnInfoPtr p
 	    RADEONSetupGenericConnectors(pScrn);
     }
 
+    if (info->ChipFamily == CHIP_FAMILY_RV100)
+    {
+        tmpConn = info->BiosConnector[0];
+
+        for (i = 0; i< RADEON_MAX_BIOS_CONNECTOR; i++)
+        {
+            if ((info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_D) ||
+                (info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_I) ||
+                (info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_A))
+                {
+                    info->BiosConnector[0] = info->BiosConnector[i];
+                    info->BiosConnector[i] = tmpConn;
+ErrorF("cooper, dvi is on slot %d\n", i);
+                    break;
+                }
+        }
+    }
+
     if (!pRADEONEnt->HasCRTC2) {
 	for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
 	    if (info->BiosConnector[i].ConnectorType == CONNECTOR_VGA)
openSUSE Build Service is sponsored by