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)