[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: BUG: XFree 4.1.0 and Chips driver



Since several people have been mailing me asking if I found a fix for
the problem I will post it here.

Egbert Eich told me that patch is o.k. and that he will check in a
similar one into cvs.

regards
jens

On Tue, Sep 11, 2001 at 08:13:08AM +1000, Daniel Robert Franklin wrote:
> > Hello,
> > 
> > I updated XFree to 4.1 on my laptop (the version from Debian woody), and
> > now X doesn't work anymore.
> > 
> 
> FWIW I see exactly the same thing on my Compaq Armada 1500c. 4.0.2 worked
> fine.
> 
> - Daniel
> 
> -- 
> ******************************************************************************
> *      Daniel Franklin - Postgraduate student in Electrical Engineering
> *      University of Wollongong, NSW, Australia  *  d.franklin@ieee.org
> ******************************************************************************

-- 
Jens Taprogge
--- ct_driver.c.orig	Thu Jul 26 11:03:17 2001
+++ ct_driver.c	Thu Jul 26 11:04:00 2001
@@ -3609,7 +3609,10 @@
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+       cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
 
     if (cPtr->Flags & ChipsDualChannelSupport)
@@ -3639,7 +3642,10 @@
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
     CHIPSACLPtr cAcl = CHIPSACLPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+       cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
 
     /* Invalidate the cached acceleration registers */
@@ -3666,10 +3672,13 @@
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     int i, index, shift ;
     
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+       cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
+    
     shift = ((pScrn->depth == 15) && 
 	     (!(cPtr->Flags & ChipsOverlay8plus16))) ? 3 : 0;
 
@@ -3722,9 +3731,12 @@
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     int i, index;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+       cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
 
     if (cPtr->UseDualChannel)
 	DUALREOPEN;
@@ -3777,7 +3789,7 @@
 {
     ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
     vgaHWPtr hwp;
-    CHIPSPtr cPtr;
+    CHIPSPtr cPtr = CHIPSPTR(pScrn);
     CHIPSACLPtr cAcl;
     int ret;
     VisualPtr visual;
@@ -3785,7 +3797,10 @@
     unsigned int racflag = 0;
     unsigned char *FBStart;
     int height, width, displayWidth;
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+       cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
 #ifdef DEBUG
     ErrorF("CHIPSScreenInit\n");
@@ -3794,7 +3809,6 @@
      * we need to get the ScrnInfoRec for this screen, so let's allocate
      * one first thing
      */
-    cPtr = CHIPSPTR(pScrn);
     cAcl = CHIPSACLPTR(pScrn);
     hwp = VGAHWPTR(pScrn);
     hwp->MapSize = 0x10000;		/* Standard 64k VGA window */
@@ -4295,7 +4309,9 @@
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
 
     ErrorF("CHIPSSwitchMode\n");
@@ -4312,11 +4328,14 @@
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     int Base;
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     unsigned char tmp;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
 
     if (xf86ReturnOptValBool(cPtr->Options, OPTION_SHOWCACHE, FALSE) && y) {
 	int lastline = cPtr->FbMapSize / 
@@ -4407,7 +4426,9 @@
 {
     ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
     
     if(pScrn->vtSema){   /*§§§*/
@@ -4424,7 +4445,8 @@
 	chipsUnmapMem(pScrn);
     }
 
-    if (xf86IsEntityShared(pScrn->entityList[0])) {
+    if ((cPtr->Flags & ChipsDualChannelSupport) &&
+            xf86IsEntityShared(pScrn->entityList[0])) {
 	DevUnion *pPriv;
 	pPriv = xf86GetEntityPrivate(pScrn->entityList[0], CHIPSEntityIndex);
 	cPtrEnt = pPriv->ptr;
@@ -4490,9 +4512,12 @@
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     unsigned char dpmsreg, seqreg, lcdoff, tmp;
+
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
     
     if (!pScrn->vtSema)
 	return;
@@ -4636,9 +4661,12 @@
     unsigned char tmp;
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     unsigned char Type = cPtr->ClockType;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
 
     Clock->msr = hwp->readMiscOut(hwp)&0xFE; /* save standard VGA clock reg */
     switch (Type & GET_STYLE) {
@@ -4688,9 +4716,13 @@
 {
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     unsigned char Type = cPtr->ClockType;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
+
 
     if (no > (pScrn->numClocks - 1))
 	return (FALSE);
@@ -6856,7 +6888,10 @@
 {
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
     vgaHWPtr hwp = VGAHWPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+    CHIPSEntPtr cPtrEnt = NULL;
+
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
 					CHIPSEntityIndex)->ptr;
 
     if (cPtr->Flags & ChipsLinearSupport) {
@@ -6960,9 +6995,12 @@
 {
     CHIPSPtr cPtr = CHIPSPTR(pScrn);
     vgaHWPtr hwp = VGAHWPTR(pScrn);
-    CHIPSEntPtr cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
-					CHIPSEntityIndex)->ptr;
+    CHIPSEntPtr cPtrEnt = NULL;
     unsigned char scrn;
+    
+    if ((cPtr->Flags & ChipsDualChannelSupport)) 
+        cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+					CHIPSEntityIndex)->ptr;
     
     if (cPtr->UseDualChannel)
 	DUALREOPEN;

Reply to: