Subject: XF86 4.1
To: None <port-macppc@netbsd.org>
From: Charles M. Hannum <abuse@spamalicious.com>
List: port-macppc
Date: 09/30/2001 01:59:02
--=-EhCqVGre+HKD3Gx+6lgO
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

So I took a whack at making XFree86 4.1 (the version in our xsrc tree)
work on -current.  Attached is a set of diffs.

The stuff in macppcPci.c is a hack I swiped from Tsubai's patches, but
as hacked by me to squeeze it into the tree, it will only work on the
Uninorth.  This is temporary until I make it use /dev/pciN.

I also swiped the keyboard map from Tsubai's old patches, and added
several missing keys.  You need to configure it as "macintosh_usb" now.

As a bonus, 24bpp, DGA and Xvideo all work now -- at least on the ATI
chip in the cube.  (However, xmame has some issues running with 24bpp
DGA.)


--=-EhCqVGre+HKD3Gx+6lgO
Content-Type: text/plain
Content-Disposition: attachment; filename=xf86-diff
Content-ID: <1001814479.12746.3.camel@trinity.ihack.net>
Content-Transfer-Encoding: 7bit

Index: config/cf/NetBSD.cf
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/config/cf/NetBSD.cf,v
retrieving revision 1.18
diff -c -2 -r1.18 NetBSD.cf
*** config/cf/NetBSD.cf	2001/09/18 09:50:29	1.18
--- config/cf/NetBSD.cf	2001/09/30 01:34:35
***************
*** 242,246 ****
  #   define XkbServerDefines     -DXKB_ALWAYS_USES_SOFT_REPEAT
  #   ifndef XFree86ConsoleDefines
! #    defined XFree86ConsoleDefines	-DWSCONS_SUPPORT
  #   endif
  # else   
--- 242,246 ----
  #   define XkbServerDefines     -DXKB_ALWAYS_USES_SOFT_REPEAT
  #   ifndef XFree86ConsoleDefines
! #    define XFree86ConsoleDefines	-DWSCONS_SUPPORT
  #   endif
  # else   
Index: config/cf/xfree86.cf
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/config/cf/xfree86.cf,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 xfree86.cf
*** config/cf/xfree86.cf	2001/06/09 14:53:01	1.1.1.3
--- config/cf/xfree86.cf	2001/09/30 01:34:36
***************
*** 651,655 ****
  #  define XF86CardDrivers	mga glint s3virge sis savage\
  				trident chips tdfx fbdev \
! 				DevelDrivers vga \
  				XF86OSCardDrivers XF86ExtraCardDrivers
  # endif
--- 651,655 ----
  #  define XF86CardDrivers	mga glint s3virge sis savage\
  				trident chips tdfx fbdev \
! 				DevelDrivers vga ati \
  				XF86OSCardDrivers XF86ExtraCardDrivers
  # endif
Index: programs/Xserver/hw/xfree86/common/xf86Kbd.c
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 xf86Kbd.c
*** programs/Xserver/hw/xfree86/common/xf86Kbd.c	2001/06/09 15:04:01	1.1.1.3
--- programs/Xserver/hw/xfree86/common/xf86Kbd.c	2001/09/30 01:34:59
***************
*** 45,49 ****
  	!defined(Lynx) && !defined(AMOEBA) && !defined(MINIX) && \
  	!defined(__OSF__) && !defined(__EMX__) && !defined(__mips__) && \
! 	!defined(__arm32__) && !defined(__GNU__) && !defined(__QNX__)
  #define HAS_GETKBTYPE
  #endif
--- 45,50 ----
  	!defined(Lynx) && !defined(AMOEBA) && !defined(MINIX) && \
  	!defined(__OSF__) && !defined(__EMX__) && !defined(__mips__) && \
! 	!defined(__arm32__) && !defined(__GNU__) && !defined(__QNX__) && \
! 	!defined(CSRG_BASED)
  #define HAS_GETKBTYPE
  #endif
***************
*** 52,56 ****
  	!defined(__OSF__) && !defined(__EMX__) && !defined(__mips__) && \
  	!defined(__arm32__) && !defined(__GNU__) && !defined(DGUX) && \
! 	!defined(__QNX__)
  #define HAS_GETKEYMAP
  #endif
--- 53,57 ----
  	!defined(__OSF__) && !defined(__EMX__) && !defined(__mips__) && \
  	!defined(__arm32__) && !defined(__GNU__) && !defined(DGUX) && \
! 	!defined(__QNX__) && !defined(CSRG_BASED)
  #define HAS_GETKEYMAP
  #endif
Index: programs/Xserver/hw/xfree86/drivers/ati/r128.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 r128.h
*** programs/Xserver/hw/xfree86/drivers/ati/r128.h	2001/06/09 15:05:47	1.1.1.3
--- programs/Xserver/hw/xfree86/drivers/ati/r128.h	2001/09/30 01:35:00
***************
*** 61,65 ****
  #define R128_DEBUG    0         /* Turn off debugging output                */
  #define R128_TIMEOUT  2000000   /* Fall out of wait loops after this count */
! #define R128_MMIOSIZE 0x80000
  
  #define R128_VBIOS_SIZE 0x00010000
--- 61,65 ----
  #define R128_DEBUG    0         /* Turn off debugging output                */
  #define R128_TIMEOUT  2000000   /* Fall out of wait loops after this count */
! #define R128_MMIOSIZE 0x4000
  
  #define R128_VBIOS_SIZE 0x00010000
Index: programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 r128_driver.c
*** programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c	2001/06/09 15:05:50	1.1.1.3
--- programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c	2001/09/30 01:35:01
***************
*** 1192,1196 ****
  {
      R128InfoPtr   info = R128PTR(pScrn);
! #if 1 && !defined(__alpha__)
      /* int10 is broken on some Alphas */
      if (xf86LoadSubModule(pScrn, "int10")) {
--- 1192,1196 ----
  {
      R128InfoPtr   info = R128PTR(pScrn);
! #if 1 && !defined(__alpha__) && !defined(__powerpc__)
      /* int10 is broken on some Alphas */
      if (xf86LoadSubModule(pScrn, "int10")) {
Index: programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 xf86_OSlib.h
*** programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h	2001/06/09 15:08:12	1.1.1.3
--- programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h	2001/09/30 01:35:03
***************
*** 453,459 ****
  #       undef CONSOLE_X_BELL
  #     endif
- #     if defined(WSCONS_SUPPORT) && !defined(PCVT_SUPPORT)
- #       include <dev/wscons/wsdisplay_usl_io.h>
- #     endif
  #   endif
  #   ifdef SYSCONS_SUPPORT
--- 453,456 ----
***************
*** 481,492 ****
  #      include <machine/pcvt_ioctl.h>
  #     else
! #      if defined(__NetBSD__) || defined(__OpenBSD__)
! #       if defined(WSCONS_SUPPORT)
!          /* NetBSD's wscons has a PCVT-compatibility module. */
! #        include <dev/wscons/wsdisplay_usl_io.h>
! #       else
! #        include <machine/pcvt_ioctl.h>
! #       endif /* WSCONS_SUPPORT */
! #      else
  #       include <sys/pcvt_ioctl.h>
  #      endif /* __NetBSD__ */
--- 478,482 ----
  #      include <machine/pcvt_ioctl.h>
  #     else
! #      if !defined(__NetBSD__) && !defined(__OpenBSD__)
  #       include <sys/pcvt_ioctl.h>
  #      endif /* __NetBSD__ */
***************
*** 563,566 ****
--- 553,557 ----
  # if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
  #  define USE_VT_SYSREQ
+ #  include <dev/wscons/wsdisplay_usl_io.h>
  # endif
  
Index: programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c,v
retrieving revision 1.7
diff -c -2 -r1.7 bsd_video.c
*** programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c	2001/09/17 11:00:15	1.7
--- programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c	2001/09/30 01:35:04
***************
*** 731,740 ****
  	     int Len)
  {
  	int rv;
  	int kmem;
  
!  	kmem = open("/dev/kmem", 2);
   	if (kmem == -1) {
!  		FatalError("xf86ReadBIOS: open /dev/kmem\n");
   	}
  
--- 731,741 ----
  	     int Len)
  {
+ #if 0
  	int rv;
  	int kmem;
  
!  	kmem = open("/dev/mem", 2);
   	if (kmem == -1) {
!  		FatalError("xf86ReadBIOS: open /dev/mem\n");
   	}
  
***************
*** 753,756 ****
--- 754,760 ----
  
  	return rv;
+ #else
+ 	return -1;
+ #endif
  }
  
Index: programs/Xserver/hw/xfree86/os-support/bus/Imakefile
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile,v
retrieving revision 1.4
diff -c -2 -r1.4 Imakefile
*** programs/Xserver/hw/xfree86/os-support/bus/Imakefile	2001/06/09 17:56:50	1.4
--- programs/Xserver/hw/xfree86/os-support/bus/Imakefile	2001/09/30 01:35:04
***************
*** 42,45 ****
--- 42,52 ----
  PCIDRVROBJ = freebsdPci.o
  
+ #elif defined(NetBSDArchitecture) && defined(PpcArchitecture)
+ 
+ XCOMM NetBSD/powerpc
+ 
+ PCIDRVRSRC = macppcPci.c
+ PCIDRVROBJ = macppcPci.o
+ 
  #elif defined(PpcArchitecture)
  
Index: programs/xkbcomp/keycodes/macintosh
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/xkbcomp/keycodes/macintosh,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 macintosh
*** programs/xkbcomp/keycodes/macintosh	2001/06/09 15:14:26	1.1.1.3
--- programs/xkbcomp/keycodes/macintosh	2001/09/30 01:35:07
***************
*** 160,161 ****
--- 160,287 ----
      alias <ALGR> = <RALT>;
  };
+ 
+ // XXX incomplete
+ 
+ xkb_keycodes "usb" {
+ 
+     minimum= 8;
+     maximum= 255;
+ 
+     <ESC>  =  49;
+     <AE01> =  38;
+     <AE02> =  39;
+     <AE03> =  40;
+     <AE04> =  41;
+     <AE05> =  42;
+     <AE06> =  43;
+     <AE07> =  44;
+     <AE08> =  45;
+     <AE09> =  46;
+     <AE10> =  47;
+     <AE11> =  53;
+     <AE12> =  54;
+     <BKSL> = 145;	// backslash JP only
+     <BKSP> =  50;	// delete
+ 
+     <TAB>  =  51;
+     <AD01> =  28;
+     <AD02> =  34;
+     <AD03> =  16;
+     <AD04> =  29;
+     <AD05> =  31;
+     <AD06> =  36;
+     <AD07> =  32;
+     <AD08> =  20;
+     <AD09> =  26;
+     <AD10> =  27;
+     <AD11> =  55;
+     <AD12> =  56;
+     <RTRN> =  48;
+ 
+     <LCTL> = 232;
+     <AC01> =  12;
+     <AC02> =  30;
+     <AC03> =  15;
+     <AC04> =  17;
+     <AC05> =  18;
+     <AC06> =  19;
+     <AC07> =  21;
+     <AC08> =  22;
+     <AC09> =  23;
+     <AC10> =  59;
+     <AC11> =  60;
+     <AC12> =  58;	// JP only
+     <RCTL> = 236;
+ 
+     <LFSH> = 233;
+     <AB01> =  37;
+     <AB02> =  35;
+     <AB03> =  14;
+     <AB04> =  33;
+     <AB05> =  13;
+     <AB06> =  25;
+     <AB07> =  24;
+     <AB08> =  62;
+     <AB09> =  63;
+     <AB10> =  64;
+     <AB11> = 143;	// JP only
+     <RTSH> = 237;	// Shift_R
+ 
+     <CAPS> =  65;
+     <LALT> = 234;
+     <LMTA> = 235;
+     <EISU> = 153;	// JP
+     <SPCE> =  52;
+     <KANA> = 152;	// JP
+     <RMTA> = 239;
+     <RALT> = 238;
+ 
+     <FK01> =  66;
+     <FK02> =  67;
+     <FK03> =  68;
+     <FK04> =  69;
+     <FK05> =  70;
+     <FK06> =  71;
+     <FK07> =  72;
+     <FK08> =  73;
+     <FK09> =  74;
+     <FK10> =  75;
+     <FK11> =  76;
+     <FK12> =  77;
+ 
+     <HELP> =  81;
+     <HOME> =  82;
+     <PGUP> =  83;
+     <PGDN> =  86;
+ 
+     <UP>   =  90;
+     <LEFT> =  88;
+     <DOWN> =  89;
+     <RGHT> =  87;
+ 
+     <KPCL> =  91;
+     <KPEQ> = 111;
+     <KPDV> =  92;
+     <KPMU> =  93;
+ 
+     <KP7>  = 103;
+     <KP8>  = 104;
+     <KP9>  = 105;
+     <KPSU> =  94;
+ 
+     <KP4>  = 100;
+     <KP5>  = 101;
+     <KP6>  = 102;
+     <KPAD> =  95;
+ 
+     <KP1>  =  97;
+     <KP2>  =  98;
+     <KP3>  =  99;
+     <KPEN> =  96;
+ 
+     <KP0>  = 106;
+     <KPSP> = 141;
+     <KPDL> = 107;
+ 
+     indicator 1 = "Caps Lock";
+ };
Index: programs/xkbcomp/rules/xfree86
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/xkbcomp/rules/xfree86,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 xfree86
*** programs/xkbcomp/rules/xfree86	2001/06/09 15:14:27	1.1.1.3
--- programs/xkbcomp/rules/xfree86	2001/09/30 01:35:08
***************
*** 35,38 ****
--- 35,39 ----
    macintosh	=	xfree86		macintosh(macintosh)
    macintosh_old	=	macintosh	macintosh(macintosh)
+   macintosh_usb =	macintosh(usb)	macintosh(macintosh)
    powerpcps2	=	powerpcps2	pc(pc104)
  
***************
*** 123,126 ****
--- 124,130 ----
    macintosh_old	en_US	=	macintosh/us(extended)
    macintosh_old	*	=	macintosh/us(extended)+macintosh/%l%(v)
+   macintosh_usb	us	=	macintosh/us(extended)
+   macintosh_usb	en_US	=	macintosh/us(extended)
+   macintosh_usb	*	=	macintosh/us(extended)+macintosh/%l%(v)
    powerpcps2	us	=	us(pc104)
    powerpcps2	en_US	=	en_US(pc104)
Index: programs/xkbcomp/symbols/macintosh/us
===================================================================
RCS file: /cvsroot/xsrc/xfree/xc/programs/xkbcomp/symbols/macintosh/us,v
retrieving revision 1.1.1.3
diff -c -2 -r1.1.1.3 us
*** programs/xkbcomp/symbols/macintosh/us	2001/06/09 15:14:31	1.1.1.3
--- programs/xkbcomp/symbols/macintosh/us	2001/09/30 01:35:08
***************
*** 114,117 ****
--- 114,118 ----
  
      // Begin "Editing" section
+     key <HELP> {	[  Help			]	};
      key  <INS> {	[  Insert		]	};
      key <HOME> {	[  Home			]	};
***************
*** 150,153 ****
--- 151,155 ----
      key  <KP0> {	[  KP_0	, KP_Insert	]	};
      key <KPDL> { 	[  KP_Decimal , KP_Delete ]	};
+     key <KPSP> {	[  KP_Separator		]	};
      // End "Keypad" section
  
***************
*** 157,160 ****
--- 159,164 ----
      key <LCTL> {	[  Control_L		]	};
      key <LALT> {	[  Alt_L	 	]	};
+     key <LMTA> {	[  Meta_L		]	};
+     key <RMTA> {	[  Meta_R		]	};
      key <RALT> {        [ Mode_switch,  Multi_key       ]       };
      key <RTSH> {	[  Shift_R		]	};
*** /dev/null	Sun Sep 30 01:07:08 2001
--- programs/Xserver/hw/xfree86/os-support/bus/macppcPci.c	Sat Sep 29 22:39:31 2001
***************
*** 0 ****
--- 1,384 ----
+ #include <sys/types.h>
+ #include <sys/mman.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <machine/bswap.h>
+ 
+ #include "xf86.h"
+ #include "xf86Priv.h"
+ #include "xf86OSpriv.h"
+ 
+ #include "Pci.h"
+ 
+ #undef PCHB_DEBUG
+ #define UNINORTH
+ 
+ #ifdef PCHB_DEBUG
+ # define DPRINTF ErrorF
+ #else
+ # define DPRINTF while (0) ErrorF
+ #endif
+ 
+ CARD32 banditPciConfRead(PCITAG, int);
+ void banditPciConfWrite(PCITAG, int, CARD32);
+ CARD32 gracklePciConfRead(PCITAG, int);
+ void gracklePciConfWrite(PCITAG, int, CARD32);
+ CARD32 uninorthPciConfRead(PCITAG, int);
+ void uninorthPciConfWrite(PCITAG, int, CARD32);
+ 
+ void macppcPciSetBits(PCITAG, int, CARD32, CARD32);
+ 
+ int open(const char *, int);	/* XXX */
+ 
+ static int kmem = -1;
+ 
+ pciBusInfo_t macppcPci0 = {
+ /* configMech  */	PCI_CFG_MECH_OTHER,
+ /* numDevices  */	32,
+ /* secondary   */	FALSE,
+ /* primary_bus */	0,
+ /* ppc_io_base */	0,	/* XXX */
+ /* ppc_io_size */	0,	/* XXX */
+ /* funcs       */	{
+ 				pciReadLongNULL,
+ 				pciWriteLongNULL,
+ 				macppcPciSetBits,
+ 				pciAddrNOOP,
+ 				pciAddrNOOP
+ 			},
+ /* pciBusPriv  */	NULL
+ };
+ 
+ void
+ ppcPciInit()
+ {
+ 	pciNumBuses    = 1;
+ 	pciBusInfo[0]  = &macppcPci0;
+ 	pciFindFirstFP = pciGenFindFirst;
+ 	pciFindNextFP  = pciGenFindNext;
+ 
+ 	kmem = open("/dev/mem", 2);
+ 	if (kmem == -1)
+ 		FatalError("ppcPciInit: /dev/mem\n");
+ 
+ #if 0
+ 	if (xf86Info.pcitype == NULL) {
+ 		ErrorF("Option \"PCI type\" is not set\n");
+ 		FatalError("Please set PCI type in your XF86Config");
+ 	} else if (strcasecmp(xf86Info.pcitype, "bandit") == 0) {
+ 		pciBusInfo[0]->funcs.pciReadLong  = banditPciConfRead;
+ 		pciBusInfo[0]->funcs.pciWriteLong = banditPciConfWrite;
+ 	} else if (strcasecmp(xf86Info.pcitype, "grackle") == 0) {
+ 		pciBusInfo[0]->funcs.pciReadLong  = gracklePciConfRead;
+ 		pciBusInfo[0]->funcs.pciWriteLong = gracklePciConfWrite;
+ 	} else if (strcasecmp(xf86Info.pcitype, "uninorth") == 0) {
+ #endif
+ 		pciBusInfo[0]->funcs.pciReadLong  = uninorthPciConfRead;
+ 		pciBusInfo[0]->funcs.pciWriteLong = uninorthPciConfWrite;
+ #if 0
+ 	} else {
+ 		FatalError("Invalid PCI type \"%s\"\n", xf86Info.pcitype);
+ 	}
+ 
+ 	xf86Msg(X_CONFIG, "PCI-HOST bridge is %s\n", xf86Info.pcitype);
+ #endif
+ }
+ 
+ #define BANDIT_BASE 0xf2000000
+ #define BANDIT_ADDR (BANDIT_BASE + 0x800000)
+ #define BANDIT_DATA (BANDIT_BASE + 0xc00000)
+ 
+ #define GRACKLE_ADDR 0xfec00000
+ #define GRACKLE_DATA 0xfee00000
+ 
+ #define UNINORTH_BASE 0xf0000000
+ #define UNINORTH_ADDR (UNINORTH_BASE + 0x800000)
+ #define UNINORTH_DATA (UNINORTH_BASE + 0xc00000)
+ 
+ CARD32
+ banditPciConfRead(PCITAG tag, int reg)
+ {
+ 	CARD32 val = 0xffffffff;
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	if (bus > 0)
+ 		return val;			/* XXX for now */
+ 	if (dev < 11)
+ 		return val;
+ 
+ 	DPRINTF("pciConfRead: PCI(%d:%d:%d)[0x%02x]", bus, dev, func, reg);
+ 
+ 	if (dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfRead: Illegal range\n");
+ 
+ 	x = bswap32((1 << dev) | (func << 8) | reg);
+ 	lseek(kmem, BANDIT_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	read(kmem, &x, 4);		/* XXX dummy read */
+ 
+ 	lseek(kmem, BANDIT_DATA, 0);	/* data port */
+ 	read(kmem, &x, 4);
+ 	val = bswap32(x);
+ 
+ 	x = 0;
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	read(kmem, &x, 4);
+ 
+ 	DPRINTF("--> 0x%lx\n", val);
+ 	return val;
+ }
+ 
+ void
+ banditPciConfWrite(PCITAG tag, int reg, CARD32 val)
+ {
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	DPRINTF("pciConfWrite: PCI(%d:%d:%d)[0x%02x] = 0x%x\n",
+ 	    bus, dev, func, reg, val);
+ 
+ 	if (bus > 0 || dev < 11 ||
+ 	    dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfWrite: Illegal range\n");
+ 
+ 	/* XXX Don't disable mem_enable */
+ 	if (reg == 4)
+ 		val |= PCI_CMD_MEM_ENABLE;
+ 
+ 	x = bswap32((1 << dev) | (func << 8) | reg);
+ 	lseek(kmem, BANDIT_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	read(kmem, &x, 4);		/* dummy read */
+ 
+ 	x = bswap32(val);
+ 	lseek(kmem, BANDIT_DATA, 0);	/* data port */
+ 	write(kmem, &x, 4);
+ 
+ 	x = 0;
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, BANDIT_ADDR, 0);
+ 	read(kmem, &x, 4);
+ }
+ 
+ CARD32
+ uninorthPciConfRead(PCITAG tag, int reg)
+ {
+ 	CARD32 val = 0xffffffff;
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 	paddr_t daddr = (reg & 0x04) == 0 ? UNINORTH_DATA : UNINORTH_DATA + 4;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	if (bus > 0)
+ 		return val;			/* XXX for now */
+ 	if (dev < 11)
+ 		return val;
+ 
+ 	DPRINTF("pciConfRead: PCI(%d:%d:%d)[0x%02x]", bus, dev, func, reg);
+ 
+ 	if (dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfRead: Illegal range\n");
+ 
+ 	x = bswap32((1 << dev) | (func << 8) | reg);
+ 	lseek(kmem, UNINORTH_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	read(kmem, &x, 4);		/* XXX dummy read */
+ 
+ 	lseek(kmem, daddr, 0);		/* data port */
+ 	read(kmem, &x, 4);
+ 	val = bswap32(x);
+ 
+ 	x = 0;
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	read(kmem, &x, 4);
+ 
+ 	DPRINTF("--> 0x%lx\n", val);
+ 	return val;
+ }
+ 
+ void
+ uninorthPciConfWrite(PCITAG tag, int reg, CARD32 val)
+ {
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 	paddr_t daddr = (reg & 0x04) == 0 ? UNINORTH_DATA : UNINORTH_DATA + 4;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	DPRINTF("pciConfWrite: PCI(%d:%d:%d)[0x%02x] = 0x%x\n",
+ 	    bus, dev, func, reg, val);
+ 
+ 	if (bus > 0 || dev < 11 ||
+ 	    dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfWrite: Illegal range\n");
+ 
+ 	/* XXX Don't disable mem_enable */
+ 	if (reg == 4)
+ 		val |= PCI_CMD_MEM_ENABLE;
+ 
+ 	x = bswap32((1 << dev) | (func << 8) | reg);
+ 	lseek(kmem, UNINORTH_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	read(kmem, &x, 4);		/* dummy read */
+ 
+ 	x = bswap32(val);
+ 	lseek(kmem, daddr, 0);		/* data port */
+ 	write(kmem, &x, 4);
+ 
+ 	x = 0;
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, UNINORTH_ADDR, 0);
+ 	read(kmem, &x, 4);
+ }
+ 
+ CARD32
+ gracklePciConfRead(PCITAG tag, int reg)
+ {
+ 	CARD32 val = 0xffffffff;
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	if (bus > 0)
+ 		return val;			/* XXX for now */
+ 
+ 	DPRINTF("pciConfRead: PCI(%d:%d:%d)[0x%02x]", bus, dev, func, reg);
+ 
+ 	if (dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfRead: Illegal range\n");
+ 
+ 	x = bswap32(0x80000000 | (bus << 16) | (dev << 11) | (func << 8) | reg);
+ 	lseek(kmem, GRACKLE_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	read(kmem, &x, 4);		/* XXX dummy read */
+ 
+ 	lseek(kmem, GRACKLE_DATA, 0);
+ 	read(kmem, &x, 4);
+ 	val = bswap32(x);
+ 
+ 	x = 0;
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	read(kmem, &x, 4);
+ 
+ 	DPRINTF("--> 0x%lx\n", val);
+ 	return val;
+ }
+ 
+ void
+ gracklePciConfWrite(PCITAG tag, int reg, CARD32 val)
+ {
+ 	u_int bus, dev, func;
+ 	u_int x;
+ 
+ 	bus  = PCI_BUS_FROM_TAG(tag);
+ 	dev  = PCI_DEV_FROM_TAG(tag);
+ 	func = PCI_FUNC_FROM_TAG(tag);
+ 
+ 	DPRINTF("pciConfWrite: PCI(%d:%d:%d)[0x%02x] = 0x%x\n",
+ 	    bus, dev, func, reg, val);
+ 
+ 	if (bus > 0 ||
+ 	    dev > 31 || func > 7 || reg < 0 || reg > 255 || (reg & 3) != 0)
+ 		FatalError("pciConfWrite: Illegal range\n");
+ 
+ 	/* XXX Don't disable mem_enable */
+ 	if (reg == 4)
+ 		val |= PCI_CMD_MEM_ENABLE;
+ 
+ 	x = bswap32(0x80000000 | (bus << 16) | (dev << 11) | (func << 8) | reg);
+ 	lseek(kmem, GRACKLE_ADDR, 0);	/* addr port */
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	read(kmem, &x, 4);		/* dummy read */
+ 
+ 	x = bswap32(val);
+ 	lseek(kmem, GRACKLE_DATA, 0);
+ 	write(kmem, &x, 4);
+ 
+ 	x = 0;
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	write(kmem, &x, 4);
+ 	lseek(kmem, GRACKLE_ADDR, 0);
+ 	read(kmem, &x, 4);
+ }
+ 
+ void
+ macppcPciSetBits(PCITAG tag, int reg, CARD32 mask, CARD32 bits)
+ {
+ 	CARD32 val;
+ 
+ 	DPRINTF("pciSetBits\n");
+ 
+ 	val = pciBusInfo[0]->funcs.pciReadLong(tag, reg);
+ 	val = (val & ~mask) | (bits & mask);
+ 	pciBusInfo[0]->funcs.pciWriteLong(tag, reg, val);
+ }
+ 
+ 
+ #include "compiler.h"
+ 
+ u_int
+ debug_inb(u_short port, int line, char *file)
+ {
+ 	FatalError("inb() called from %s line %d\n", file, line);
+ }
+ 
+ u_int
+ debug_inw(u_short port, int line, char *file)
+ {
+ 	FatalError("inw() called from %s line %d\n", file, line);
+ }
+ 
+ u_int
+ debug_inl(u_short port, int line, char *file)
+ {
+ 	FatalError("inl() called from %s line %d\n", file, line);
+ }
+ 
+ void
+ debug_outb(u_short port, u_char value, int line, char *file)
+ {
+ 	FatalError("outb() called from %s line %d\n", file, line);
+ }
+ 
+ void
+ debug_outw(u_short port, u_short value, int line, char *file)
+ {
+ 	FatalError("outw() called from %s line %d\n", file, line);
+ }
+ 
+ void
+ debug_outl(u_short port, u_int value, int line, char *file)
+ {
+ 	FatalError("outl() called from %s line %d\n", file, line);
+ }


--=-EhCqVGre+HKD3Gx+6lgO
Content-Type: text/plain
Content-Disposition: attachment; filename=XF86Config
Content-ID: <1001815087.286.3.camel@trinity.ihack.net>
Content-Transfer-Encoding: 7bit

#
# XF86Config example
#

# The ordering of sections is not important in version 4.0 and later.

# **********************************************************************
# Files section.  This allows default font and rgb paths to be set
# **********************************************************************

Section "Files"
    FontPath	"/usr/X11R6/lib/X11/fonts/local/"
    FontPath	"/usr/X11R6/lib/X11/fonts/misc/"
    FontPath	"/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath	"/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath	"/usr/X11R6/lib/X11/fonts/Type1/"
    FontPath	"/usr/X11R6/lib/X11/fonts/CID/"
    FontPath	"/usr/X11R6/lib/X11/fonts/Speedo/"
    FontPath	"/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath	"/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

# **********************************************************************
# Server flags section.  This contains various server-wide Options.
# **********************************************************************

Section "ServerFlags"
    Option	"blank time"	"10"	# 10 minutes
    Option	"standby time"	"20"
    Option	"suspend time"	"30"
    Option	"off time"	"60"

    Option	"PCI type"	"UniNorth"
#   Option	"PCI type"	"Bandit"
#   Option	"PCI type"	"Grackle"
EndSection

# **********************************************************************
# Input devices
# **********************************************************************

# **********************************************************************
# Core keyboard's InputDevice section
# **********************************************************************

Section "InputDevice"
    Identifier	"Keyboard 1"
    Driver	"keyboard"
    Option	"Protocol"	"wskbd"
    Option	"Device"	"/dev/wskbd0"

    Option	"AutoRepeat"	"500 5"
    Option	"XkbRules"	"xfree86"
    Option	"XkbModel"	"macintosh_usb"
    Option	"XkbLayout"	"us"
    Option	"XkbVariant"	"us"
EndSection


# **********************************************************************
# Core Pointer's InputDevice section
# **********************************************************************

Section "InputDevice"
    Identifier	"Mouse 1"
    Driver	"mouse"
    Option	"Protocol"	"wsmouse"
    Option	"Device"	"/dev/wsmouse0"
EndSection

# **********************************************************************
# Monitor section
# **********************************************************************

# Any number of monitor sections may be present

Section "Monitor"
    Identifier	"Generic Monitor"
    HorizSync	27-100        # multisync
#   VertRefresh	50-80         # multisync
    VertRefresh	60            # multisync
    Option	"dpms"
EndSection

# **********************************************************************
# Graphics device section
# **********************************************************************

Section "Device"
    Identifier	"Rage128"
    VendorName  "ATI"
    Driver	"r128"
    BusID	"PCI:0:16:0"
EndSection

# **********************************************************************
# Screen sections.
# **********************************************************************

Section "Screen"
    Identifier		"Screen 1"
    Device		"Rage128"
    Monitor		"Generic Monitor"

# XXX 24bpp may be broken

#   DefaultDepth	8
    DefaultDepth	16
#   DefaultDepth	24
#   DefaultDepth	32

    SubSection "Display"
	Depth		8
	Modes		"1280x1024" "1152x900" "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
	Depth		16
	Modes		"1280x1024" "1152x900" "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
	Depth		24
	Modes		"1280x1024" "1152x900" "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
	Depth		32
	Modes		"1280x1024" "1152x900" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection


# **********************************************************************
# ServerLayout sections.
# **********************************************************************

Section "ServerLayout"
    Identifier	"Main Layout"
    Screen	"Screen 1"
    InputDevice	"Mouse 1"	"CorePointer"
    InputDevice	"Keyboard 1"	"CoreKeyboard"
EndSection

--=-EhCqVGre+HKD3Gx+6lgO--