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: