--- p9000.old.c	Thu Jan 19 05:54:03 1995
+++ p9000.new.c	Sat Mar 30 11:39:51 1996
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/p9000/p9000.c,v 3.18 1994/09/24 15:12:34 dawes Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/accel/p9000/p9000.c,v 3.20 1994/11/26 12:44:16 dawes Exp $ */
 /*
  * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
  * Copyright 1994 by Erik Nygren <nygren@mit.edu>
@@ -115,6 +115,8 @@
     0,			/* int COPbase */
     0,			/* int POSbase */
     0,			/* int instance */
+    0,			/* int s3Madjust */
+    0,			/* int s3Nadjust */
 };
 
 extern miPointerScreenFuncRec xf86PointerScreenFuncs;
@@ -200,8 +202,8 @@
         (a & 0x01) << 7;
 
 /* Raster operation (alu) -> minterm mapping */
-unsigned int p9000alu[16];
-unsigned int p9000QuadAlu[16];
+unsigned int p9000alu[16];	/* alu src = p9000 src        */
+unsigned int p9000QuadAlu[16] ; /* alu src = p9000 foreground */
 
 /*
  * p9000Probe --
@@ -222,7 +224,6 @@
     int            i;
     unsigned long  tmpsysconfig;  /* dummy value */
 
-    /* Check for linear vid mem capability */
     if (!xf86LinearVidMem())
       {
 	ErrorF("%s %s: This operating system does not support memory mapping of linear regions.\nAs a result, it can not be used with this server\n",
@@ -276,14 +277,24 @@
     xf86EnableIOPorts(p9000InfoRec.scrnIndex);
     
     OFLG_ZERO(&validOptions);
+    OFLG_SET(OPTION_SW_CURSOR, &validOptions);
+    OFLG_SET(OPTION_NOACCEL, &validOptions);
+    OFLG_SET(OPTION_SYNC_ON_GREEN, &validOptions);
+    OFLG_SET(OPTION_VRAM_128, &validOptions);
+    OFLG_SET(OPTION_VRAM_256, &validOptions);
     xf86VerifyOptions(&validOptions, &p9000InfoRec);
     
+#if 0  /* We shouldn't need this any more */
     if (!p9000InfoRec.clocks)
       {
 	ErrorF("%s %s: Autodetection of clocks is not supported.\n\tExplicitly specify in XF86Config file on a Clocks line.\n", XCONFIG_PROBED, p9000InfoRec.name);
 	return(FALSE);
       }
-    
+#endif
+    /* At the moment, all P9000-based boards use a icd2061a compatable
+     * programmable clock so no more differentiation than this is needed */
+    OFLG_SET(CLOCK_OPTION_PROGRAMABLE, &(p9000InfoRec.clockOptions));
+
     if (!p9000InfoRec.videoRam)
       {
 	ErrorF("%s %s: Autodetection of video RAM is not yet supported.\n\tExplicitly specify VideoRAM in XF86Config file.\n", XCONFIG_PROBED, p9000InfoRec.name);
@@ -487,6 +498,8 @@
 		p9000InfoRec.virtualX = pEnd->HDisplay;
 		p9000InfoRec.virtualY = pEnd->VDisplay;
 	      }
+	    /* Set the clock synthesizer frequency */
+	    pMode->SynthClock = p9000InfoRec.clock[pMode->Clock];
 	    pMode = pMode->next;
 	  }
       } while (pMode != pEnd);
@@ -635,7 +648,7 @@
 #endif
   
   if (!p9000ScreenInit(pScreen,
-		       (volatile pointer) VidBase,
+		       (pointer) VidBase,
 		       p9000InfoRec.virtualX, p9000InfoRec.virtualY,
 		       75, 75,
 		       p9000InfoRec.virtualX))
