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 * [EMAIL PROTECTED] > ****************************************************************************** -- 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;