Index: xfree/xc/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.4
diff -u -r1.1.1.4 xf86Kbd.c
--- xfree/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c       2002/01/19 15:06:53     1.1.1.4
+++ xfree/xc/programs/Xserver/hw/xfree86/common/xf86Kbd.c       2002/01/28 16:32:25
@@ -41,14 +41,15 @@
#if defined(KDGKBTYPE) && \
       !defined(Lynx) && \
       !defined(__EMX__) && !defined(__mips__) && \
-       !defined(__arm32__) && !defined(__GNU__) && !defined(__QNX__)
+       !defined(__arm32__) && !defined(__GNU__) && !defined(__QNX__) && \
+       !defined(CSRG_BASED)
#define HAS_GETKBTYPE
#endif
#if defined(GIO_KEYMAP) && \
       !defined(Lynx) && \
       !defined(__EMX__) && !defined(__mips__) && \
       !defined(__arm32__) && !defined(__GNU__) && !defined(DGUX) && \
-       !defined(__QNX__)
+       !defined(__QNX__) && !defined(CSRG_BASED)
#define HAS_GETKEYMAP

#define KD_GET_ENTRY(i,n) \
Index: xfree/xc/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.4
diff -u -r1.1.1.4 r128.h
--- xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h     2002/01/19 15:08:56     1.1.1.4
+++ xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h     2002/01/28 16:32:26
@@ -63,7 +63,7 @@

#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_MMIOSIZE 0x4000

#define R128_VBIOS_SIZE 0x00010000

Index: xfree/xc/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.4
diff -u -r1.1.1.4 r128_driver.c
--- xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c      2002/01/19 15:09:00     1.1.1.4
+++ xfree/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c      2002/01/28 16:32:32
@@ -1614,7 +1614,7 @@
static Bool R128PreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10)
{
    R128InfoPtr   info = R128PTR(pScrn);
-#if 1 && !defined(__alpha__)
+#if 1 && !defined(__alpha__) && !defined(__powerpc__)
    /* int10 is broken on some Alphas */
    if (xf86LoadSubModule(pScrn, "int10")) {
       xf86LoaderReqSymLists(int10Symbols, NULL);
Index: xfree/xc/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.4
diff -u -r1.1.1.4 xf86_OSlib.h
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h        2002/01/19 15:11:57     1.1.1.4
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h        2002/01/28 16:32:33
@@ -544,6 +544,7 @@

# if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
#  define USE_VT_SYSREQ
+#  include <dev/wscons/wsdisplay_usl_io.h>
# endif

#endif /* CSRG_BASED */
Index: xfree/xc/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.8
diff -u -r1.8 bsd_video.c
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c     2002/01/19 23:19:35     1.8
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bsd/bsd_video.c     2002/01/28 16:32:35
@@ -732,12 +732,13 @@
xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
            int Len)
{
+#if 0
       int rv;
       int kmem;

-       kmem = open("/dev/kmem", 2);
+       kmem = open("/dev/mem", 2);
       if (kmem == -1) {
-               FatalError("xf86ReadBIOS: open /dev/kmem\n");
+               FatalError("xf86ReadBIOS: open /dev/mem\n");
       }

#ifdef DEBUG
@@ -755,6 +756,9 @@
       close(kmem);

       return rv;
+#else
+      return -1;
+#endif
}


Index: xfree/xc/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.5
diff -u -r1.5 Imakefile
--- xfree/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile       2002/01/19 23:19:35     1.5
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bus/Imakefile       2002/01/28 16:32:35
@@ -47,6 +47,13 @@
PCIDRVRSRC = freebsdPci.c
PCIDRVROBJ = freebsdPci.o

+#elif defined(NetBSDArchitecture) && defined(PpcArchitecture)
+
+XCOMM NetBSD/powerpc
+
+PCIDRVRSRC = macppcPci.c
+PCIDRVROBJ = macppcPci.o
+
#elif defined(PpcArchitecture)

XCOMM PowerPC PCI drivers


===================================================================
--- /dev/null   Mon Jan 28 17:31:43 2002
+++ xfree/xc/programs/Xserver/hw/xfree86/os-support/bus/macppcPci.c     Sun Jan 27 19:07:33 2002
@@ -0,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);
+}