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

XFree86 4.1.0pre1v1.3 on Alpha

First, let me say that I'm not a Debian developer, just an Alpha user who
wanted to upgrade to a more modern graphics card on his system, ran into
some trouble, and tracked it down.

The attached patch makes a PCI Voodoo3 3000 PCI card work on my Alpha
PC164LX.  Without it, the system goes into a whole lot of bad during X
initialization: 'sync' works afterwards, but 'halt' does not.

The root of the problem is that the int10 subsystem is extremely broken for
Alpha, at least for the type of Alpha that I have (LX).  After int10 has
done its work, calls to sleep(), usleep(), nanosleep(), etc. never return.

My patch simply disables the use of int10 (and therefore also DDC) in the
tdfx driver, like is done on PowerPC.  This change probably precludes use
of a 3dfx card as a second head on Alpha.  The functionality obviously
worked for someone, or it would not have been put in.  But IMHO this way is
safer for more users.

BTW, 4.1.0pre1v1.3 works like a champ out-of-box on a Matrox Millennium II
in the same system.

I have to say, the Debian packagaing makes it *much* easier (albeit
time-consuming) for an outsider to approach building the monster that is
XFree86.  Thanks for listening.


Doug Larrick  doug@ties.org  doug.larrick@compaq.com  AIM: DougLarick
--- xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c.orig	Sat Jun 30 09:32:46 2001
+++ xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c	Sat Jun 30 09:34:00 2001
@@ -668,7 +668,7 @@
   pTDFX->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
   if (flags & PROBE_DETECT) {
-#if !defined(__powerpc__)
+#if !defined(__powerpc__) && !defined(__alpha__)
     TDFXProbeDDC(pScrn, pTDFX->pEnt->index);
     return TRUE;
@@ -685,7 +685,7 @@
   /* Allocate a vgaHWRec */
   if (!vgaHWGetHWRec(pScrn)) return FALSE;
-#if !defined(__powerpc__)
+#if !defined(__powerpc__) && !defined(__alpha__)
   if (xf86LoadSubModule(pScrn, "int10")) {
     xf86Int10InfoPtr pInt;
     xf86DrvMsg(pScrn->scrnIndex, X_INFO, 
@@ -1006,7 +1006,7 @@
     xf86LoaderReqSymLists(ramdacSymbols, NULL);
-#if !defined(__powerpc__)
+#if !defined(__powerpc__) && !defined(__alpha__)
   /* Load DDC if needed */
   /* This gives us DDC1 - we should be able to get DDC2B using i2c */
   if (!xf86LoadSubModule(pScrn, "ddc")) {

Reply to: