## Automatically generated incremental diff
## From:   linux-2.4.23-bk18
## To:     linux-2.4.23-bk19
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.4.23-bk18/Documentation/Configure.help linux-2.4.23-bk19/Documentation/Configure.help
--- linux-2.4.23-bk18/Documentation/Configure.help	2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/Configure.help	2003-12-30 02:50:28.000000000 -0800
@@ -11372,6 +11372,18 @@
   Say 'Y' to this option if you are planning to use Multilink PPP over the
   PC300 synchronous communication boards.
 
+CONFIG_PCI200SYN
+  This driver is for PCI200SYN cards made by Goramo sp. j.
+  If you have such a card, say Y or M here and see
+  <http://hq.pm.waw.pl/pub/hdlc/>
+
+  If you want to compile the driver as a module ( = code which can be
+  inserted in and removed from the running kernel whenever you want),
+  say M here and read <file:Documentation/modules.txt>.  The module
+  will be called pci200syn.o.
+
+  If unsure, say N here.
+
 SDL RISCom/N2 support
 CONFIG_N2
   This driver is for RISCom/N2 single or dual channel ISA cards
@@ -11400,25 +11412,6 @@
 
   If unsure, say N here.
 
-CONFIG_HDLC_DEBUG_PKT
-  This option is for developers only - do NOT use on production
-  systems.
-
-CONFIG_HDLC_DEBUG_HARD_HEADER
-  This option is for developers only - do NOT use on production
-  systems.
-
-CONFIG_HDLC_DEBUG_ECN
-  This option is for developers only - do NOT use on production
-  systems.
-
-CONFIG_HDLC_DEBUG_RINGS
-  If you answer Y here you will be able to get a diagnostic dump of
-  port's TX and RX packet rings, using "sethdlc hdlcX private"
-  command. It does not affect normal operations.
-
-  If unsure, say Y here.
-
 Ethernet (10 or 100Mbit)
 CONFIG_NET_ETHERNET
   Ethernet (also called IEEE 802.3 or ISO 8802-2) is the most common
@@ -19052,9 +19045,9 @@
   <file:Documentation/modules.txt>.
   The module will be called i2c-elv.o.
 
-Velleman K9000 adapter
+Velleman K8000 adapter
 CONFIG_I2C_VELLEMAN
-  This supports the Velleman K9000 parallel-port I2C adapter.  Say Y
+  This supports the Velleman K8000 parallel-port I2C adapter.  Say Y
   if you own such an adapter.
 
   This driver is also available as a module.  If you want to compile
@@ -28276,6 +28269,14 @@
   This support is also available as a module.  If compiled as a
   module, it will be called scx200.o.
 
+NatSemi SCx200 GPIO support
+CONFIG_SCx200_GPIO
+  Give userspace access to the GPIO pins on the National
+  Semiconductor SCx200 processors.
+
+  This support is also available as a module.  If compiled as a
+  module, it will be called scx200_gpio.o.
+
 NatSemi SCx200 Watchdog
 CONFIG_SCx200_WDT
   Enable the built-in watchdog timer support on the National 
@@ -28427,7 +28428,7 @@
   If compiled as a module, it will be called uclinux.o.
 
 NatSemi SCx200 I2C using GPIO pins
-CONFIG_SCx200_GPIO
+CONFIG_SCx200_I2C
   Enable the use of two GPIO pins of a SCx200 processor as an I2C bus.
 
   If you don't know what to do here, say N.
diff -urN linux-2.4.23-bk18/Documentation/i2c/i2c-velleman linux-2.4.23-bk19/Documentation/i2c/i2c-velleman
--- linux-2.4.23-bk18/Documentation/i2c/i2c-velleman	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/i2c/i2c-velleman	2003-12-30 02:50:28.000000000 -0800
@@ -0,0 +1,23 @@
+i2c-velleman driver
+-------------------
+This is a driver for i2c-hw access for Velleman K8000 and other adapters.
+
+Useful links
+------------
+Velleman:
+	http://www.velleman.be/
+
+Velleman K8000 Howto:
+	http://howto.htlw16.ac.at/k8000-howto.html
+
+K8000 and K8005 libraries
+-------------------------
+The project has lead to new libs for the Velleman K8000 and K8005:
+LIBK8000 v1.99.1 and LIBK8005 v0.21
+
+With these libs, you can control the K8000 interface card and the K8005
+stepper motor card with the simple commands which are in the original
+Velleman software, like SetIOchannel, ReadADchannel, SendStepCCWFull and
+many more, using /dev/velleman.
+
+The libs can be found on http://groups.yahoo.com/group/k8000/files/linux/
diff -urN linux-2.4.23-bk18/Documentation/i2c/summary linux-2.4.23-bk19/Documentation/i2c/summary
--- linux-2.4.23-bk18/Documentation/i2c/summary	2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Documentation/i2c/summary	2003-12-30 02:50:28.000000000 -0800
@@ -71,5 +71,5 @@
 i2c-ppc405:      IBM 405xx processor I2C device (uses i2c-algo-ppc405) (NOT BUILT BY DEFAULT)
 i2c-pport:       Primitive parallel port adapter (uses i2c-algo-bit)
 i2c-rpx:         RPX board Motorola 8xx I2C device (uses i2c-algo-8xx) (NOT BUILT BY DEFAULT)
-i2c-velleman:    Velleman K9000 parallel port adapter (uses i2c-algo-bit)
+i2c-velleman:    Velleman K8000 parallel port adapter (uses i2c-algo-bit)
 
diff -urN linux-2.4.23-bk18/Makefile linux-2.4.23-bk19/Makefile
--- linux-2.4.23-bk18/Makefile	2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/Makefile	2003-12-30 02:50:28.000000000 -0800
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 23
-EXTRAVERSION = -bk18
+EXTRAVERSION = -bk19
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.23-bk18/arch/ppc/boot/Makefile linux-2.4.23-bk19/arch/ppc/boot/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/Makefile	2003-12-30 02:50:23.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -33,6 +33,7 @@
 tools-$(CONFIG_4xx)		:= mktree
 tools-$(CONFIG_LOPEC)		:= mkbugboot mkprep
 tools-$(CONFIG_PPLUS)		:= mkbugboot mkprep
+tools-$(CONFIG_PRPMC750)	:= mkbugboot mkprep
 tools-$(CONFIG_SPRUCE)		:= mktree
 
 # These are dirs we don't want to go into on BOOT_TARGETS.  We have them for
diff -urN linux-2.4.23-bk18/arch/ppc/boot/chrp/Makefile linux-2.4.23-bk19/arch/ppc/boot/chrp/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/chrp/Makefile	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/chrp/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -50,13 +50,13 @@
 		--set-section-flags=.sysmap=contents,alloc,load,readonly,data
 endif
 
-zImage: $(OBJS) $(LIBS) $(ADDNOTE)
+zImage: $(OBJS) $(LIBS) $(ADDNOTE) ../ld.script
 	$(LD) $(LD_ARGS) -o ../images/$@.chrp $(OBJS) $(LIBS)
 	$(OBJCOPY) ../images/$@.chrp ../images/$@.chrp -R .comment -R .ramdisk
 	cp ../images/$@.chrp ../images/$@.chrp-rs6k
 	$(ADDNOTE) ../images/$@.chrp-rs6k
 
-zImage.initrd: $(OBJS) $(LIBS) $(ADDNOTE) ../images/ramdisk.image.gz
+zImage.initrd: $(OBJS) $(LIBS) $(ADDNOTE) ../images/ramdisk.image.gz ../ld.script
 	$(OBJCOPY) image.o image.o \
 		--add-section=.ramdisk=../images/ramdisk.image.gz \
 		--set-section-flags=.ramdisk=contents,alloc,load,readonly,data
diff -urN linux-2.4.23-bk18/arch/ppc/boot/common/misc-simple.c linux-2.4.23-bk19/arch/ppc/boot/common/misc-simple.c
--- linux-2.4.23-bk18/arch/ppc/boot/common/misc-simple.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/boot/common/misc-simple.c	2003-12-30 02:50:29.000000000 -0800
@@ -75,16 +75,9 @@
 extern void gunzip(void *, int, unsigned char *, int *);
 extern void serial_fixups(void);
 
-/* Allow decompress_kernel to be hooked into.  This is the default. */
-void * __attribute__ ((weak))
-load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
-		void *bp)
-{
-	return decompress_kernel(load_addr, num_words, cksum, bp);
-}
-
-struct bi_record *
-decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
+static struct bi_record *
+decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
+		void *ignored)
 {
 #ifdef INTERACTIVE_CONSOLE
 	int timer = 0;
@@ -271,3 +264,11 @@
 
 	return (struct bi_record *)rec_loc;
 }
+
+/* Allow decompress_kernel to be hooked into.  This is the default. */
+void * __attribute__ ((weak))
+load_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
+		void *bp)
+{
+	return decompress_kernel(load_addr, num_words, cksum, bp);
+}
diff -urN linux-2.4.23-bk18/arch/ppc/boot/pmac/Makefile linux-2.4.23-bk19/arch/ppc/boot/pmac/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/pmac/Makefile	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/pmac/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -84,7 +84,7 @@
 	rm -f coffboot.initrd
 	ln -sf vmlinux.initrd.coff ../images/zImage.initrd.pmac
 
-vmlinux.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o
+vmlinux.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o ../ld.script
 	$(LD) $(CHRP_LD_ARGS) -o ../images/$@ $(CHRPOBJS) $(LIBS) image.o
 	$(MKNOTE) > note
 	$(OBJCOPY) ../images/$@ ../images/$@ --add-section=.note=note \
@@ -92,7 +92,7 @@
 	rm -f note
 
 vmlinux.initrd.elf-pmac: $(CHRPOBJS) $(LIBS) $(MKNOTE) image.o \
-		../images/ramdisk.image.gz
+		../images/ramdisk.image.gz ../ld.script
 	$(OBJCOPY) image.o image-elf.o \
 		--add-section=.ramdisk=../images/ramdisk.image.gz \
 		--set-section-flags=.ramdisk=contents,alloc,load,readonly,data
diff -urN linux-2.4.23-bk18/arch/ppc/boot/simple/Makefile linux-2.4.23-bk19/arch/ppc/boot/simple/Makefile
--- linux-2.4.23-bk18/arch/ppc/boot/simple/Makefile	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/simple/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -9,12 +9,10 @@
 # or implied.
 #
 # Notes:
-# (1) For machine targets which produce more than one image, define
-# ZNETBOOT and ZNETBOOTRD to the image which should be available for
-# 'znetboot' and 'znetboot.initrd`
-# (2) For machine targets which use the mktree program, define END to be
-# the machine name you want in the image, and you can optionally set
-# ENTRYPOINT which the image should be loaded at.  The optimal setting
+# (1) All machines must set the END variable to the suffix of the preferred
+# final image (i.e. would be copied in 'make znetboot'.
+# (2) For machine targets which use the mktree program you can optionally
+# set ENTRYPOINT which the image should be loaded at.  The optimal setting
 # for ENTRYPOINT is the link address.
 
 USE_STANDARD_AS_RULE		:= true
@@ -25,15 +23,13 @@
 ifeq ($(CONFIG_EMBEDDEDBOOT),y)
 ZIMAGE				:= zImage-EMBEDDED
 ZIMAGEINITRD			:= zImage.initrd-EMBEDDED
-TFTPIMAGE			:= /tftpboot/zImage.embedded
 MISC				:= misc-embedded.o
+END				:= embedded
 endif
 ifeq ($(CONFIG_IBM_OPENBIOS),y)
 ZIMAGE				:= zImage-TREE
 ZIMAGEINITRD			:= zImage.initrd-TREE
 END				:= treeboot
-ZNETBOOT			:= zImage.treeboot
-ZNETBOOTRD			:= zImage.initrd.treeboot
 TFTPIMAGE			:= /tftpboot/zImage.embedded
 MISC				:= misc-embedded.o
 endif
@@ -42,9 +38,6 @@
 ZIMAGEINITRD			:= zImage.initrd-TREE
 END				:= ebony
 ENTRYPOINT			:= 0x00800000
-ZNETBOOT			:= zImage.treeboot
-ZNETBOOTRD			:= zImage.initrd.treeboot
-TFTPIMAGE			:= /tftpboot/zImage.$(END)
 EXTRA				:= misc-44x.o
 endif
 ifeq ($(CONFIG_OCOTEA),y)
@@ -52,25 +45,21 @@
 ZIMAGEINITRD			:= zImage.initrd-TREE
 END				:= ocotea
 ENTRYPOINT			:= 0x00800000
-ZNETBOOT			:= zImage.treeboot
-ZNETBOOTRD			:= zImage.initrd.treeboot
-TFTPIMAGE			:= /tftpboot/zImage.$(END)
 EXTRA				:= misc-44x.o
 endif
 ifeq ($(CONFIG_GEMINI),y)
 ZIMAGE				:= zImage-SMON
 ZIMAGEINITRD			:= zImage.initrd-SMON
-TFTPIMAGE			:= /tftpboot/zImage.gemini
+END				:= gemini
 endif
 # kbuild-2.4 'feature', only one of these will ever by 'y' at a time.
 # The rest will be unset.
-ifeq ($(CONFIG_LOPEC)$(CONFIG_PPLUS),y)
+ifeq ($(CONFIG_LOPEC)$(CONFIG_PPLUS)$(CONFIG_PRPMC750),y)
 ZIMAGE				:= zImage-PPLUS
 ZIMAGEINITRD			:= zImage.initrd-PPLUS
 EXTRA				:= ../common/mpc10x_memory.o
 TFTPIMAGE			:= /tftpboot/zImage.pplus
-ZNETBOOT			:= zImage.pplus
-ZNETBOOTRD			:= zImage.initrd.pplus
+END				:= pplus
 endif
 ifeq ($(CONFIG_PPLUS),y)
 EXTRA				:= legacy.o
@@ -78,7 +67,14 @@
 ifeq ($(CONFIG_PAL4),y)
 ZIMAGE				:= zImage-PAL4
 ZIMAGEINITRD			:= zImage.initrd-PAL4
-TFTPIMAGE			:= /tftpboot/zImage.pal4
+END				:= pal4
+endif
+ifeq ($(CONFIG_SANDPOINT),y)
+ZIMAGE				:= zImage-SP
+ZIMAGEINITRD			:= zImage.initrd-SP
+CACHEFLAG			:= -include clear.S
+TFTPIMAGE			:= /tftpboot/zImage.sandpoint
+END				:= sandpoint
 endif
 ifeq ($(CONFIG_SPRUCE),y)
 ZIMAGE				:= zImage-TREE
@@ -86,12 +82,14 @@
 ENTRYPOINT			:= 0x00800000
 MISC				:= misc-spruce.o
 END				:= spruce
-TFTPIMAGE			:= /tftpboot/zImage.$(END)
 endif
+
+TFTPIMAGE			?= /tftpboot/zImage.$(END)
 ifeq ($(CONFIG_SMP),y)
 TFTPIMAGE			+= .smp
 endif
 
+
 # Setup a default address to put ourselves, change it as needed.
 LD_ARGS				= -T ../ld.script -Ttext 0x00800000 -Bstatic
 ifdef CONFIG_8xx
@@ -156,30 +154,22 @@
 	rm -f zvmlinux.initrd
 
 znetboot: zImage
-ifneq ($(ZNETBOOT),)
-	cp ../images/$(ZNETBOOT) $(TFTPIMAGE)
-else
-	cp ../images/zImage.* $(TFTPIMAGE)
-endif
+	cp ../images/zImage.$(END) $(TFTPIMAGE)
 
 znetboot.initrd: zImage.initrd
-ifneq ($(ZNETBOOTRD),)
-	cp ../images/$(ZNETBOOTRD) $(TFTPIMAGE)
-else
-	cp ../images/zImage.* $(TFTPIMAGE)
-endif
+	cp ../images/zImage.initrd.$(END) $(TFTPIMAGE)
 
 zImage-EMBEDDED: zvmlinux
-	mv zvmlinux ../images/zImage.embedded
+	mv zvmlinux ../images/zImage.$(END)
 
 zImage.initrd-EMBEDDED: zvmlinux.initrd
-	mv zvmlinux.initrd ../images/zImage.initrd.embedded
+	mv zvmlinux.initrd ../images/zImage.initrd.$(END)
 
 zImage-PAL4: zvmlinux
-	mv zvmlinux ../images/zImage.pal4
+	mv zvmlinux ../images/zImage.$(END)
 
 zImage.initrd-PAL4: zvmlinux.initrd
-	mv zvmlinux.initrd ../images/zImage.initrd.pal4
+	mv zvmlinux.initrd ../images/zImage.initrd.$(END)
 
 zImage-PPLUS: zvmlinux $(MKPREP) $(MKBUGBOOT)
 	$(MKPREP) -pbp zvmlinux ../images/zImage.pplus
@@ -189,11 +179,17 @@
 	$(MKPREP) -pbp zvmlinux.initrd ../images/zImage.initrd.pplus
 	$(MKBUGBOOT) zvmlinux.initrd ../images/zImage.initrd.bugboot
 
+zImage-SP: zvmlinux
+	mv zvmlinux ../images/zImage.sandpoint
+
+zImage.initrd-SP: zvmlinux.initrd
+	mv zvmlinux.initrd ../images/zImage.initrd.sandpoint
+
 zImage-SMON: zvmlinux
-	dd if=zvmlinux of=../images/zImage.gemini skip=64 bs=1k
+	dd if=zvmlinux of=../images/zImage.$(END) skip=64 bs=1k
 
 zImage.initrd-SMON: zvmlinux.initrd
-	dd if=zvmlinux.initrd of=../images/zImage.initrd.gemini skip=64 bs=1k
+	dd if=zvmlinux.initrd of=../images/zImage.initrd.$(END) skip=64 bs=1k
 
 zImage-TREE: zvmlinux
 	$(MKTREE) zvmlinux ../images/zImage.$(END) $(ENTRYPOINT)
diff -urN linux-2.4.23-bk18/arch/ppc/boot/simple/clear.S linux-2.4.23-bk19/arch/ppc/boot/simple/clear.S
--- linux-2.4.23-bk18/arch/ppc/boot/simple/clear.S	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/boot/simple/clear.S	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,19 @@
+/*
+ * Code to call _setup_L2CR to flus, invalidate and disable the L2,
+ * and if present, do the same to the L3.
+ */
+
+#define CLEAR_CACHES						\
+	bl	_setup_L2CR;					\
+								\
+	/* If 745x, turn off L3CR as well */			\
+	mfspr	r8,PVR;						\
+	srwi	r8,r8,16;					\
+								\
+	cmpli	cr0,r8,0x8000;			/* 7450 */	\
+	cmpli	cr1,r8,0x8001;			/* 7455 */	\
+	cmpli	cr2,r8,0x8002;			/* 7457 */	\
+	/* Now test if any are true. */				\
+	cror	4*cr0+eq,4*cr0+eq,4*cr1+eq;			\
+	cror	4*cr0+eq,4*cr0+eq,4*cr2+eq;			\
+	beql	_setup_L3CR
diff -urN linux-2.4.23-bk18/arch/ppc/boot/utils/mkprep.c linux-2.4.23-bk19/arch/ppc/boot/utils/mkprep.c
--- linux-2.4.23-bk18/arch/ppc/boot/utils/mkprep.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/boot/utils/mkprep.c	2003-12-30 02:50:29.000000000 -0800
@@ -12,12 +12,14 @@
  *                  -- Cort
  *
  * Modified for x86 hosted builds by Matt Porter <porter@neta.com>
+ * Modified for Sparc hosted builds by Peter Wahl <PeterWahl@web.de>
  */
 
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <strings.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
@@ -147,7 +149,7 @@
 void write_prep_partition(int in, int out)
 {
   unsigned char block[512];
-  partition_entry_t *pe = (partition_entry_t *)&block[0x1BE];
+  partition_entry_t pe;
   dword_t *entry  = (dword_t *)&block[0];
   dword_t *length = (dword_t *)&block[sizeof(long)];
   struct stat info;
@@ -177,8 +179,8 @@
    * Build a "PReP" partition table entry in the boot record
    *  - "PReP" may only look at the system_indicator
    */
-  pe->boot_indicator   = BootActive;
-  pe->system_indicator = SystemPrep;
+  pe.boot_indicator   = BootActive;
+  pe.system_indicator = SystemPrep;
   /*
    * The first block of the diskette is used by this "boot record" which
    * actually contains the partition table. (The first block of the
@@ -186,12 +188,12 @@
    * one partition on the diskette and it shall contain the rest of the
    * diskette.
    */
-  pe->starting_head     = 0;	/* zero-based			     */
-  pe->starting_sector   = 2;	/* one-based			     */
-  pe->starting_cylinder = 0;	/* zero-based			     */
-  pe->ending_head       = 1;	/* assumes two heads		     */
-  pe->ending_sector     = 18;	/* assumes 18 sectors/track	     */
-  pe->ending_cylinder   = 79;	/* assumes 80 cylinders/diskette     */
+  pe.starting_head     = 0;	/* zero-based			     */
+  pe.starting_sector   = 2;	/* one-based			     */
+  pe.starting_cylinder = 0;	/* zero-based			     */
+  pe.ending_head       = 1;	/* assumes two heads		     */
+  pe.ending_sector     = 18;	/* assumes 18 sectors/track	     */
+  pe.ending_cylinder   = 79;	/* assumes 80 cylinders/diskette     */
 
   /*
    * The "PReP" software ignores the above fields and just looks at
@@ -201,22 +203,24 @@
    *   - unlike the above sector numbers, the beginning sector is zero-based!
    */
 #if 0
-  pe->beginning_sector  = cpu_to_le32(1);
+  pe.beginning_sector  = cpu_to_le32(1);
 #else
   /* This has to be 0 on the PowerStack? */
 #ifdef __i386__
-  pe->beginning_sector  = 0;
+  pe.beginning_sector  = 0;
 #else
-  pe->beginning_sector  = cpu_to_le32(0);
+  pe.beginning_sector  = cpu_to_le32(0);
 #endif /* __i386__ */
 #endif
 
 #ifdef __i386__
-  pe->number_of_sectors = 2*18*80-1;
+  pe.number_of_sectors = 2*18*80-1;
 #else
-  pe->number_of_sectors = cpu_to_le32(2*18*80-1);
+  pe.number_of_sectors = cpu_to_le32(2*18*80-1);
 #endif /* __i386__ */
 
+  memcpy(&block[0x1BE],&pe,sizeof(pe));
+
   write( out, block, sizeof(block) );
   write( out, entry, sizeof(*entry) );
   write( out, length, sizeof(*length) );
diff -urN linux-2.4.23-bk18/arch/ppc/config.in linux-2.4.23-bk19/arch/ppc/config.in
--- linux-2.4.23-bk18/arch/ppc/config.in	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/config.in	2003-12-30 02:50:29.000000000 -0800
@@ -111,13 +111,15 @@
 	 Amiga-APUS		CONFIG_APUS		\
 	 IBM-Spruce		CONFIG_SPRUCE		\
 	 Motorola-LoPEC		CONFIG_LOPEC		\
+	 Motorola-Sandpoint	CONFIG_SANDPOINT	\
 	 Motorola-PowerPlus	CONFIG_PPLUS		\
+	 Motorola-PrPMC750	CONFIG_PRPMC750		\
 	 SBS-Palomar4		CONFIG_PAL4		\
 	 Synergy-Gemini		CONFIG_GEMINI"		CHRP/PowerMac/PReP
 fi
 
-if [ "$CONFIG_SPRUCE" = "y" ]; then
-  define_bool CONFIG_GEN550 y
+if [ "$CONFIG_SANDPOINT" = "y" ]; then
+  bool 'Enable MPC10x store gathering' CONFIG_MPC10X_STORE_GATHERING
 fi
 
 if [ "$CONFIG_LOPEC" = "y" ]; then
@@ -129,6 +131,19 @@
   define_bool CONFIG_GEN550 y
 fi
 
+if [ "$CONFIG_PRPMC750" = "y" ]; then
+  define_bool CONFIG_GEN550 y
+fi
+
+if [ "$CONFIG_SANDPOINT" = "y" ]; then
+  define_bool CONFIG_EPIC_SERIAL_MODE y
+  define_bool CONFIG_GEN550 y
+fi
+
+if [ "$CONFIG_SPRUCE" = "y" ]; then
+  define_bool CONFIG_GEN550 y
+fi
+
 bool 'Symmetric multi-processing support' CONFIG_SMP
 if [ "$CONFIG_SMP" = "y" ]; then
   bool '  Distribute interrupts on all CPUs by default' CONFIG_IRQ_ALL_CPUS
@@ -331,6 +346,7 @@
 define_bool CONFIG_BINFMT_ELF y
 define_bool CONFIG_KERNEL_ELF y
 tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
 
 source drivers/pci/Config.in
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/IVMS8_defconfig linux-2.4.23-bk19/arch/ppc/configs/IVMS8_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/IVMS8_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/IVMS8_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/SM850_defconfig linux-2.4.23-bk19/arch/ppc/configs/SM850_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/SM850_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/SM850_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/SPD823TS_defconfig linux-2.4.23-bk19/arch/ppc/configs/SPD823TS_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/SPD823TS_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/SPD823TS_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM823L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM823L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM823L_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM823L_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM850L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM850L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM850L_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM850L_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/TQM860L_defconfig linux-2.4.23-bk19/arch/ppc/configs/TQM860L_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/TQM860L_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/TQM860L_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -70,6 +70,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/apus_defconfig linux-2.4.23-bk19/arch/ppc/configs/apus_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/apus_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/apus_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -59,6 +59,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/briq_defconfig linux-2.4.23-bk19/arch/ppc/configs/briq_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/briq_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/briq_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/bseip_defconfig linux-2.4.23-bk19/arch/ppc/configs/bseip_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/bseip_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/bseip_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -67,6 +67,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/common_defconfig linux-2.4.23-bk19/arch/ppc/configs/common_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/common_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/common_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 CONFIG_HOTPLUG=y
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ebony_defconfig linux-2.4.23-bk19/arch/ppc/configs/ebony_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ebony_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/ebony_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -62,6 +62,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/est8260_defconfig linux-2.4.23-bk19/arch/ppc/configs/est8260_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/est8260_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/est8260_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -50,6 +50,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/gemini_defconfig linux-2.4.23-bk19/arch/ppc/configs/gemini_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/gemini_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/gemini_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ibmchrp_defconfig linux-2.4.23-bk19/arch/ppc/configs/ibmchrp_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ibmchrp_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/ibmchrp_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/mbx_defconfig linux-2.4.23-bk19/arch/ppc/configs/mbx_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/mbx_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/mbx_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -67,6 +67,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/oak_defconfig linux-2.4.23-bk19/arch/ppc/configs/oak_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/oak_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/oak_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -52,6 +52,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/ocotea_defconfig linux-2.4.23-bk19/arch/ppc/configs/ocotea_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/ocotea_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/ocotea_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -63,6 +63,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pal4_defconfig linux-2.4.23-bk19/arch/ppc/configs/pal4_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pal4_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pal4_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pmac_defconfig linux-2.4.23-bk19/arch/ppc/configs/pmac_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pmac_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pmac_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 CONFIG_HOTPLUG=y
 
diff -urN linux-2.4.23-bk18/arch/ppc/configs/power3_defconfig linux-2.4.23-bk19/arch/ppc/configs/power3_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/power3_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/power3_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -52,6 +52,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/pplus_defconfig linux-2.4.23-bk19/arch/ppc/configs/pplus_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/pplus_defconfig	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/pplus_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_PCI_NAMES is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/prpmc750_defconfig linux-2.4.23-bk19/arch/ppc/configs/prpmc750_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/prpmc750_defconfig	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/prpmc750_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,622 @@
+#
+# Automatically generated make config: don't edit
+#
+# CONFIG_UID16 is not set
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_HAVE_DEC_LOCK=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_8260 is not set
+CONFIG_PPC_STD_MMU=y
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_LOPEC is not set
+# CONFIG_SANDPOINT is not set
+# CONFIG_PPLUS is not set
+CONFIG_PRPMC750=y
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+CONFIG_GEN550=y
+# CONFIG_SMP is not set
+# CONFIG_ALTIVEC is not set
+# CONFIG_TAU is not set
+CONFIG_PPC_ISATIMER=y
+
+#
+# General setup
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_ISA is not set
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
+# CONFIG_PCI_NAMES is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_PPC_RTC is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="ip=on"
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+#   IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_FTP=m
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_MAC=m
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_MATCH_TCPMSS=m
+# CONFIG_IP_NF_MATCH_HELPER is not set
+CONFIG_IP_NF_MATCH_STATE=m
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+CONFIG_IP_NF_MATCH_UNCLEAN=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_MIRROR=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_IP_NF_NAT_LOCAL is not set
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+CONFIG_IP_NF_NAT_FTP=m
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+CONFIG_IP_NF_TARGET_TCPMSS=m
+# CONFIG_IP_NF_ARPTABLES is not set
+CONFIG_IP_NF_COMPAT_IPCHAINS=m
+CONFIG_IP_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+
+#
+#   IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_GMAC is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+CONFIG_EEPRO100=y
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Macintosh device drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+CONFIG_BUSMOUSE=y
+# CONFIG_ATIXL_BUSMOUSE is not set
+# CONFIG_LOGIBUSMOUSE is not set
+# CONFIG_MS_BUSMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_MK712_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_LOG_BUF_SHIFT=0
diff -urN linux-2.4.23-bk18/arch/ppc/configs/rpxcllf_defconfig linux-2.4.23-bk19/arch/ppc/configs/rpxcllf_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/rpxcllf_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/rpxcllf_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 CONFIG_HOTPLUG=y
 
 #
diff -urN linux-2.4.23-bk18/arch/ppc/configs/rpxlite_defconfig linux-2.4.23-bk19/arch/ppc/configs/rpxlite_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/rpxlite_defconfig	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/rpxlite_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -69,6 +69,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 CONFIG_HOTPLUG=y
 
 #
diff -urN linux-2.4.23-bk18/arch/ppc/configs/sandpoint_defconfig linux-2.4.23-bk19/arch/ppc/configs/sandpoint_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/sandpoint_defconfig	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/configs/sandpoint_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,720 @@
+#
+# Automatically generated make config: don't edit
+#
+# CONFIG_UID16 is not set
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_HAVE_DEC_LOCK=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_8260 is not set
+CONFIG_PPC_STD_MMU=y
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_LOPEC is not set
+CONFIG_SANDPOINT=y
+# CONFIG_PPLUS is not set
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+# CONFIG_MPC10X_STORE_GATHERING is not set
+CONFIG_EPIC_SERIAL_MODE=y
+CONFIG_GEN550=y
+# CONFIG_SMP is not set
+CONFIG_ALTIVEC=y
+CONFIG_TAU=y
+# CONFIG_TAU_INT is not set
+# CONFIG_TAU_AVERAGE is not set
+CONFIG_PPC_ISATIMER=y
+
+#
+# General setup
+#
+# CONFIG_HIGHMEM is not set
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_ISA is not set
+# CONFIG_EISA is not set
+# CONFIG_SBUS is not set
+# CONFIG_MCA is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_OOM_KILLER is not set
+# CONFIG_PCI_NAMES is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+CONFIG_GEN_RTC=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,9600 ip=on"
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=m
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_IDEDISK_STROKE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_BLK_DEV_GENERIC is not set
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_PCI_AUTO is not set
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_PCI_WIP is not set
+# CONFIG_BLK_DEV_ADMA100 is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_WDC_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_AMD74XX_OVERRIDE is not set
+CONFIG_BLK_DEV_CMD64X=y
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_HPT34X_AUTODMA is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_PDC202XX_BURST is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+CONFIG_BLK_DEV_SL82C105=y
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+# CONFIG_BLK_DEV_ATARAID_SII is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_SD_EXTRA_DEVS=40
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_SR_EXTRA_DEVS=2
+CONFIG_CHR_DEV_SG=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+CONFIG_SCSI_AIC7XXX=y
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_PROBE_EISA_VL is not set
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_MEGARAID2 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_GMAC is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+CONFIG_DE4X5=y
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+CONFIG_EEPRO100=y
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Macintosh device drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+# CONFIG_ZLIB_INFLATE is not set
+# CONFIG_ZLIB_DEFLATE is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_LOG_BUF_SHIFT=0
diff -urN linux-2.4.23-bk18/arch/ppc/configs/spruce_defconfig linux-2.4.23-bk19/arch/ppc/configs/spruce_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/spruce_defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/spruce_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -59,6 +59,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_PCI_NAMES is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
diff -urN linux-2.4.23-bk18/arch/ppc/configs/walnut_defconfig linux-2.4.23-bk19/arch/ppc/configs/walnut_defconfig
--- linux-2.4.23-bk18/arch/ppc/configs/walnut_defconfig	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/configs/walnut_defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
 # CONFIG_HOTPLUG is not set
 # CONFIG_PCMCIA is not set
 
diff -urN linux-2.4.23-bk18/arch/ppc/defconfig linux-2.4.23-bk19/arch/ppc/defconfig
--- linux-2.4.23-bk18/arch/ppc/defconfig	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/defconfig	2003-12-30 02:50:29.000000000 -0800
@@ -60,6 +60,7 @@
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 CONFIG_BINFMT_MISC=m
+# CONFIG_OOM_KILLER is not set
 CONFIG_PCI_NAMES=y
 CONFIG_HOTPLUG=y
 
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/Makefile linux-2.4.23-bk19/arch/ppc/kernel/Makefile
--- linux-2.4.23-bk18/arch/ppc/kernel/Makefile	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -64,6 +64,7 @@
 obj-$(CONFIG_PPC4xx_DMA)	+= ppc4xx_dma.o
 obj-$(CONFIG_PPC4xx_EDMA)	+= ppc4xx_sgdma.o
 obj-$(CONFIG_8xx)		+= m8xx_setup.o ppc8xx_pic.o
+obj-$(CONFIG_8xx_WDT)		+= m8xx_wdt.o
 ifeq ($(CONFIG_8xx),y)
 obj-$(CONFIG_PCI)		+= qspan_pci.o
 ifndef CONFIG_MATH_EMULATION
@@ -79,6 +80,10 @@
 obj-$(CONFIG_PAL4)		+= indirect_pci.o pci_auto.o todc_time.o
 obj-$(CONFIG_PPLUS)		+= pplus_common.o open_pic.o i8259.o \
 				   indirect_pci.o todc_time.o pci_auto.o
+obj-$(CONFIG_PRPMC750)		+= open_pic.o indirect_pci.o pci_auto.o \
+					pplus_common.o
+obj-$(CONFIG_SANDPOINT)		+= i8259.o open_pic.o mpc10x_common.o \
+					pci_auto.o indirect_pci.o todc_time.o
 obj-$(CONFIG_SPRUCE)		+= indirect_pci.o pci_auto.o todc_time.o
 obj-$(CONFIG_8260)		+= m8260_setup.o ppc8260_pic.o
 obj-$(CONFIG_BOOTX_TEXT)	+= btext.o
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/m8xx_setup.c linux-2.4.23-bk19/arch/ppc/kernel/m8xx_setup.c
--- linux-2.4.23-bk18/arch/ppc/kernel/m8xx_setup.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/kernel/m8xx_setup.c	2003-12-30 02:50:29.000000000 -0800
@@ -58,6 +58,7 @@
 
 extern unsigned long find_available_memory(void);
 extern void m8xx_cpm_reset(uint);
+extern void m8xx_wdt_handler_install(bd_t *bp);
 
 void __init
 m8xx_setup_arch(void)
@@ -184,6 +185,13 @@
 	if (request_irq(DEC_INTERRUPT, timebase_interrupt, 0, "tbint",
 				NULL) != 0)
 		panic("Could not allocate timer IRQ!");
+
+#ifdef CONFIG_8xx_WDT
+	/* Install watchdog timer handler early because it might be
+	 * already enabled by the bootloader
+	 */
+	m8xx_wdt_handler_install(binfo);
+#endif
 }
 
 /* The RTC on the MPC8xx is an internal register.
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/m8xx_wdt.c linux-2.4.23-bk19/arch/ppc/kernel/m8xx_wdt.c
--- linux-2.4.23-bk18/arch/ppc/kernel/m8xx_wdt.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/m8xx_wdt.c	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,110 @@
+/*
+ * m8xx_wdt.c - MPC8xx watchdog driver
+ *
+ * Copyright (C) 2002 Florian Schirmer <jolt@tuxbox.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include <linux/init.h>
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <asm/8xx_immap.h>
+
+static int wdt_timeout;
+
+void
+m8xx_wdt_reset(void)
+{
+	volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+	imap->im_siu_conf.sc_swsr = 0x556c;	/* write magic1 */
+	imap->im_siu_conf.sc_swsr = 0xaa39;	/* write magic2 */
+}
+
+static void
+m8xx_wdt_interrupt(int irq, void *dev, struct pt_regs *regs)
+{
+	volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+	m8xx_wdt_reset();
+
+	imap->im_sit.sit_piscr |= PISCR_PS;	/* clear irq */
+}
+
+void __init
+m8xx_wdt_handler_install(bd_t * binfo)
+{
+	volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+	u32 pitc;
+	u32 sypcr;
+	u32 pitrtclk;
+
+	sypcr = imap->im_siu_conf.sc_sypcr;
+
+	if (!(sypcr & 0x04)) {
+		printk(KERN_NOTICE "m8xx_wdt: wdt disabled (SYPCR: 0x%08X)\n",
+		       sypcr);
+		return;
+	}
+
+	m8xx_wdt_reset();
+
+	printk(KERN_NOTICE
+	       "m8xx_wdt: active wdt found (SWTC: 0x%04X, SWP: 0x%01X)\n",
+	       (sypcr >> 16), sypcr & 0x01);
+
+	wdt_timeout = (sypcr >> 16) & 0xFFFF;
+
+	if (!wdt_timeout)
+		wdt_timeout = 0xFFFF;
+
+	if (sypcr & 0x01)
+		wdt_timeout *= 2048;
+
+	/*
+	 * Fire trigger if half of the wdt ticked down 
+	 */
+
+	if (imap->im_sit.sit_rtcsc & RTCSC_38K)
+		pitrtclk = 9600;
+	else
+		pitrtclk = 8192;
+
+	if ((wdt_timeout) > (UINT_MAX / pitrtclk))
+		pitc = wdt_timeout / binfo->bi_intfreq * pitrtclk / 2;
+	else
+		pitc = pitrtclk * wdt_timeout / binfo->bi_intfreq / 2;
+
+	imap->im_sit.sit_pitc = pitc << 16;
+	imap->im_sit.sit_piscr =
+	    (mk_int_int_mask(PIT_INTERRUPT) << 8) | PISCR_PIE | PISCR_PTE;
+
+	if (request_irq(PIT_INTERRUPT, m8xx_wdt_interrupt, 0, "watchdog", NULL))
+		panic("m8xx_wdt: could not allocate watchdog irq!");
+
+	printk(KERN_NOTICE
+	       "m8xx_wdt: keep-alive trigger installed (PITC: 0x%04X)\n", pitc);
+
+	wdt_timeout /= binfo->bi_intfreq;
+}
+
+int
+m8xx_wdt_get_timeout(void)
+{
+	return wdt_timeout;
+}
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/open_pic.c linux-2.4.23-bk19/arch/ppc/kernel/open_pic.c
--- linux-2.4.23-bk18/arch/ppc/kernel/open_pic.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/kernel/open_pic.c	2003-12-30 02:50:29.000000000 -0800
@@ -69,7 +69,6 @@
  * These functions are not used but the code is kept here
  * for completeness and future reference.
  */
-static void openpic_reset(void);
 #ifdef notused
 static void openpic_enable_8259_pass_through(void);
 static u_int openpic_get_priority(void);
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/ppc_ksyms.c linux-2.4.23-bk19/arch/ppc/kernel/ppc_ksyms.c
--- linux-2.4.23-bk18/arch/ppc/kernel/ppc_ksyms.c	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/ppc_ksyms.c	2003-12-30 02:50:29.000000000 -0800
@@ -357,6 +357,12 @@
 EXPORT_SYMBOL(cpm_free_handler);
 EXPORT_SYMBOL(m8xx_cpm_hostalloc);
 EXPORT_SYMBOL(m8xx_cpm_dpalloc);
+#ifdef CONFIG_8xx_WDT
+extern int m8xx_wdt_get_timeout(void);
+extern void m8xx_wdt_reset(void);
+EXPORT_SYMBOL(m8xx_wdt_get_timeout);
+EXPORT_SYMBOL(m8xx_wdt_reset);
+#endif
 #endif /* CONFIG_8xx */
 
 /* Those should really be inline */
diff -urN linux-2.4.23-bk18/arch/ppc/kernel/setup.c linux-2.4.23-bk19/arch/ppc/kernel/setup.c
--- linux-2.4.23-bk18/arch/ppc/kernel/setup.c	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/kernel/setup.c	2003-12-30 02:50:29.000000000 -0800
@@ -157,7 +157,7 @@
 	lpj = loops_per_jiffy;
 #endif
 
-	seq_printf(m, "processor\t: %lu\n", i);
+	seq_printf(m, "processor\t: %u\n", i);
 	seq_printf(m, "cpu\t\t: ");
 
 	if (cur_cpu_spec[i]->pvr_mask)
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/Makefile linux-2.4.23-bk19/arch/ppc/platforms/Makefile
--- linux-2.4.23-bk18/arch/ppc/platforms/Makefile	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -53,6 +53,8 @@
 obj-$(CONFIG_LOPEC)		+= lopec_setup.o lopec_pci.o
 obj-$(CONFIG_PAL4)		+= pal4_setup.o pal4_pci.o cpc700_pic.o
 obj-$(CONFIG_PPLUS)		+= pplus_pci.o pplus_setup.o
+obj-$(CONFIG_PRPMC750)		+= prpmc750.o
+obj-$(CONFIG_SANDPOINT)		+= sandpoint.o
 obj-$(CONFIG_SPRUCE)		+= spruce_setup.o spruce_pci.o cpc700_pic.o
 
 ifeq ($(CONFIG_SMP),y)
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ebony.c linux-2.4.23-bk19/arch/ppc/platforms/ebony.c
--- linux-2.4.23-bk18/arch/ppc/platforms/ebony.c	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ebony.c	2003-12-30 02:50:29.000000000 -0800
@@ -301,7 +301,7 @@
 	serial_req.baud_base = BASE_BAUD;
 	serial_req.port = 0;
 	serial_req.irq = 0;
-	serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+	serial_req.flags = ASYNC_BOOT_AUTOCONF;
 	serial_req.io_type = SERIAL_IO_MEM;
 	serial_req.iomem_base = ioremap64(PPC440GP_UART0_ADDR, 8);
 	serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ebony.h linux-2.4.23-bk19/arch/ppc/platforms/ebony.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ebony.h	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ebony.h	2003-12-30 02:50:29.000000000 -0800
@@ -68,7 +68,7 @@
 
 #define STD_UART_OP(num)					\
 	{ 0, BASE_BAUD, 0, UART##num##_INT,			\
-		(ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST),	\
+		ASYNC_BOOT_AUTOCONF,				\
 		iomem_base: UART##num##_IO_BASE,		\
 		io_type: SERIAL_IO_MEM},
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/gemini_serial.h linux-2.4.23-bk19/arch/ppc/platforms/gemini_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/gemini_serial.h	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/gemini_serial.h	2003-12-30 02:50:29.000000000 -0800
@@ -15,11 +15,11 @@
 #define BASE_BAUD  (24576000 / 16)
 
 #ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST|ASYNC_AUTO_IRQ)
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
 #define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
 #else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF)
+#define STD_COM_FLAGS ASYNC_BOOT_AUTOCONF
+#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
 #endif
 
 #define STD_SERIAL_PORT_DEFNS \
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ibm405gp.h linux-2.4.23-bk19/arch/ppc/platforms/ibm405gp.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ibm405gp.h	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/ibm405gp.h	2003-12-30 02:50:29.000000000 -0800
@@ -108,7 +108,7 @@
 
 #define STD_UART_OP(num)					\
 	{ 0, BASE_BAUD, 0, UART##num##_INT,			\
-		(ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST),	\
+		ASYNC_BOOT_AUTOCONF,				\
 		iomem_base: (u8 *)UART##num##_IO_BASE,		\
 		io_type: SERIAL_IO_MEM},
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/lopec_serial.h linux-2.4.23-bk19/arch/ppc/platforms/lopec_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/lopec_serial.h	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/lopec_serial.h	2003-12-30 02:50:29.000000000 -0800
@@ -33,7 +33,7 @@
 
 #define STD_UART_OP(num)					\
 	{ 0, BASE_BAUD, UART##num##_PORT, UART##num##_INT,	\
-		(ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST),		\
+		ASYNC_BOOT_AUTOCONF,				\
 		iomem_base: UART##num##_IO_BASE,		\
 		io_type: SERIAL_IO_MEM },
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/lopec_setup.c linux-2.4.23-bk19/arch/ppc/platforms/lopec_setup.c
--- linux-2.4.23-bk18/arch/ppc/platforms/lopec_setup.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/lopec_setup.c	2003-12-30 02:50:29.000000000 -0800
@@ -299,7 +299,7 @@
 	serial_req.line = 0;
 	serial_req.baud_base = BASE_BAUD;
 	serial_req.irq = UART0_INT;
-	serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+	serial_req.flags = ASYNC_BOOT_AUTOCONF;
 	serial_req.io_type = SERIAL_IO_MEM;
 	serial_req.iomem_base = ioremap(UART0_PORT, 8);
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ocotea.c linux-2.4.23-bk19/arch/ppc/platforms/ocotea.c
--- linux-2.4.23-bk18/arch/ppc/platforms/ocotea.c	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ocotea.c	2003-12-30 02:50:29.000000000 -0800
@@ -215,7 +215,7 @@
 	serial_req.baud_base = BASE_BAUD;
 	serial_req.port = 0;
 	serial_req.irq = 0;
-	serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+	serial_req.flags = ASYNC_BOOT_AUTOCONF;
 	serial_req.io_type = SERIAL_IO_MEM;
 	serial_req.iomem_base = ioremap64(PPC440GX_UART0_ADDR, 8);
 	serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/ocotea.h linux-2.4.23-bk19/arch/ppc/platforms/ocotea.h
--- linux-2.4.23-bk18/arch/ppc/platforms/ocotea.h	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/ocotea.h	2003-12-30 02:50:29.000000000 -0800
@@ -58,7 +58,7 @@
 #define BASE_BAUD	11059200/16
 #define STD_UART_OP(num)					\
 	{ 0, BASE_BAUD, 0, UART##num##_INT,			\
-		(ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST),	\
+		ASYNC_BOOT_AUTOCONF,				\
 		iomem_base: UART##num##_IO_BASE,		\
 		io_type: SERIAL_IO_MEM},
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/pal4_serial.h linux-2.4.23-bk19/arch/ppc/platforms/pal4_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/pal4_serial.h	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/pal4_serial.h	2003-12-30 02:50:29.000000000 -0800
@@ -20,19 +20,11 @@
 #define RS_TABLE_SIZE     2
 #define BASE_BAUD         (33333333 / 4 / 16)
 
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST|ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF)
-#endif
-
 #define SERIAL_PORT_DFNS \
-      {0, BASE_BAUD, CPC700_SERIAL_1, 3, STD_COM_FLAGS, \
+      {0, BASE_BAUD, CPC700_SERIAL_1, 3, ASYNC_BOOT_AUTOCONF, \
        iomem_base: (unsigned char *) CPC700_SERIAL_1, \
        io_type: SERIAL_IO_MEM},   /* ttyS0 */ \
-      {0, BASE_BAUD, CPC700_SERIAL_2, 4, STD_COM_FLAGS, \
+      {0, BASE_BAUD, CPC700_SERIAL_2, 4, ASYNC_BOOT_AUTOCONF, \
        iomem_base: (unsigned char *) CPC700_SERIAL_2, \
        io_type: SERIAL_IO_MEM}
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.c linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.c
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.c	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,392 @@
+/*
+ * arch/ppc/platforms/prpmc750_setup.c
+ *
+ * Board setup routines for Motorola PrPMC750
+ *
+ * Author: Matt Porter <mporter@mvista.com>
+ *
+ * 2001-2003 (c) MontaVista, Software, Inc.  This file is licensed under
+ * the terms of the GNU General Public License version 2.  This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+#include <linux/config.h>
+#include <linux/stddef.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/reboot.h>
+#include <linux/pci.h>
+#include <linux/kdev_t.h>
+#include <linux/types.h>
+#include <linux/major.h>
+#include <linux/blk.h>
+#include <linux/console.h>
+#include <linux/delay.h>
+#include <linux/irq.h>
+#include <linux/seq_file.h>
+#include <linux/ide.h>
+
+#include <asm/system.h>
+#include <asm/pgtable.h>
+#include <asm/page.h>
+#include <asm/dma.h>
+#include <asm/io.h>
+#include <asm/machdep.h>
+#include <asm/time.h>
+#include <platforms/prpmc750.h>
+#include <asm/open_pic.h>
+#include <asm/bootinfo.h>
+#include <asm/pplus.h>
+
+#include "prpmc750_serial.h"
+
+extern int mpic_init(void);
+extern unsigned long loops_per_jiffy;
+extern void gen550_progress(char *, unsigned short);
+
+static u_char prpmc750_openpic_initsenses[] __initdata =
+{
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT0 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UART */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_DEBUGINT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HAWK_WDT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_ABORT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT1 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT2 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_HOSTINT3 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTA */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTB */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTC */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_PMC_INTD */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* PRPMC750_INT_UNUSED */
+};
+
+/*
+ * Motorola PrPMC750/PrPMC800 in PrPMCBASE or PrPMC-Carrier
+ * Combined irq tables.  Only Base has IDSEL 14, only Carrier has 21 and 22.
+ */
+static inline int
+prpmc_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+	static char pci_irq_table[][4] =
+	/*
+	 *      PCI IDSEL/INTPIN->INTLINE
+	 *      A       B       C       D
+	 */ 
+	{
+		{12,	0,	0,	0},  /* IDSEL 14 - Ethernet, base */
+		{0,	0,	0,	0},  /* IDSEL 15 - unused */
+		{10,	11,	12,	9},  /* IDSEL 16 - PMC A1, PMC1 */
+		{10,	11,	12,	9},  /* IDSEL 17 - PrPMC-A-B, PMC2-B */
+		{11,	12,	9,	10}, /* IDSEL 18 - PMC A1-B, PMC1-B */
+		{0,	0,	0,	0},  /* IDSEL 19 - unused */
+		{9,	10,	11,	12}, /* IDSEL 20 - P2P Bridge */
+		{11,	12,	9,	10}, /* IDSEL 21 - PMC A2, carrier */
+		{12,	9,	10,	11}, /* IDSEL 22 - PMC A2-B, carrier */
+	};
+	const long min_idsel = 14, max_idsel = 22, irqs_per_slot = 4;
+	return PCI_IRQ_TABLE_LOOKUP;
+};
+
+static void __init
+prpmc750_pcibios_fixup(void)
+{
+	struct pci_dev *dev;
+	unsigned short wtmp;
+
+	/*
+	 * Kludge to clean up after PPC6BUG which doesn't
+	 * configure the CL5446 VGA card.  Also the
+	 * resource subsystem doesn't fixup the
+	 * PCI mem resources on the CL5446.
+	 */
+	if ((dev = pci_find_device(PCI_VENDOR_ID_CIRRUS,
+				PCI_DEVICE_ID_CIRRUS_5446, 0)))
+	{
+		dev->resource[0].start += PRPMC750_PCI_PHY_MEM_BASE;
+		dev->resource[0].end += PRPMC750_PCI_PHY_MEM_BASE;
+		pci_read_config_word(dev,
+				PCI_COMMAND,
+				&wtmp);
+		pci_write_config_word(dev,
+				PCI_COMMAND,
+				wtmp|3);
+		/* Enable Color mode in MISC reg */
+		outb(0x03, 0x3c2);
+		/* Select DRAM config reg */
+		outb(0x0f, 0x3c4);
+		/* Set proper DRAM config */
+		outb(0xdf, 0x3c5);
+	}
+}
+
+static void __init
+prpmc750_find_bridges(void)
+{
+	struct pci_controller* hose;
+
+	hose = pcibios_alloc_controller();
+	if (!hose)
+		return;
+
+	hose->first_busno = 0;
+	hose->last_busno = 0xff;
+	hose->pci_mem_offset = PRPMC750_PCI_PHY_MEM_BASE;
+
+	pci_init_resource(&hose->io_resource,
+			PRPMC750_PCI_LOWER_IO,
+			PRPMC750_PCI_UPPER_IO,
+			IORESOURCE_IO,
+			"PCI host bridge");
+
+	pci_init_resource(&hose->mem_resources[0],
+			PRPMC750_PCI_LOWER_MEM + PRPMC750_PCI_PHY_MEM_BASE,
+			PRPMC750_PCI_UPPER_MEM + PRPMC750_PCI_PHY_MEM_BASE,
+			IORESOURCE_MEM,
+			"PCI host bridge");
+
+	hose->io_space.start = PRPMC750_PCI_LOWER_IO;
+	hose->io_space.end = PRPMC750_PCI_UPPER_IO;
+	hose->mem_space.start = PRPMC750_PCI_LOWER_MEM;
+	hose->mem_space.end = PRPMC750_PCI_UPPER_MEM_AUTO;
+
+	hose->io_base_virt = (void *)PRPMC750_ISA_IO_BASE;
+	
+	setup_indirect_pci(hose,
+			PRPMC750_PCI_CONFIG_ADDR,
+			PRPMC750_PCI_CONFIG_DATA);
+
+	/*
+	 * Disable MPIC response to PCI I/O space (BAR 0).
+	 * Make MPIC respond to PCI Mem space at specified address.
+	 * (BAR 1).
+	 */
+	early_write_config_dword(hose,
+			         0,
+			         PCI_DEVFN(0,0),
+			         PCI_BASE_ADDRESS_0,
+			         0x00000000 | 0x1);
+
+	early_write_config_dword(hose,
+			         0,
+			         PCI_DEVFN(0,0),
+			         PCI_BASE_ADDRESS_1,
+			         (PRPMC750_HAWK_MPIC_BASE -
+				 	PRPMC750_PCI_MEM_OFFSET) | 0x0);
+
+	hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+	ppc_md.pcibios_fixup = prpmc750_pcibios_fixup;
+	ppc_md.pci_swizzle = common_swizzle;
+	ppc_md.pci_map_irq = prpmc_map_irq;
+}
+
+static int
+prpmc750_show_cpuinfo(struct seq_file *m)
+{
+	seq_printf(m, "machine\t\t: PrPMC750\n");
+
+	return 0;
+}
+
+static void __init
+prpmc750_setup_arch(void)
+{
+	/* init to some ~sane value until calibrate_delay() runs */
+	loops_per_jiffy = 50000000/HZ;
+
+	/* Lookup PCI host bridges */
+	prpmc750_find_bridges();
+
+#ifdef CONFIG_BLK_DEV_INITRD
+	if (initrd_start)
+		ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); /* /dev/ram */
+	else
+#endif
+#ifdef CONFIG_ROOT_NFS
+		ROOT_DEV = to_kdev_t(0x00ff); /* /dev/nfs pseudo device */
+#else
+		ROOT_DEV = to_kdev_t(0x0802); /* /dev/sda2 */
+#endif
+
+#ifdef CONFIG_DUMMY_CONSOLE
+	conswitchp = &dummy_con;
+#endif
+
+	/* Find and map our OpenPIC */
+	pplus_mpic_init(PRPMC750_PCI_MEM_OFFSET);
+	OpenPIC_InitSenses = prpmc750_openpic_initsenses;
+	OpenPIC_NumInitSenses = sizeof(prpmc750_openpic_initsenses);
+}
+
+/*
+ * Compute the PrPMC750's bus speed using the baud clock as a
+ * reference.
+ */
+static unsigned long __init
+prpmc750_get_bus_speed(void)
+{
+	unsigned long tbl_start, tbl_end;
+	unsigned long current_state, old_state, bus_speed;
+	unsigned char lcr, dll, dlm;
+	int baud_divisor, count;
+
+	/* Read the UART's baud clock divisor */
+	lcr = readb(PRPMC750_SERIAL_0_LCR);
+	writeb(lcr | UART_LCR_DLAB, PRPMC750_SERIAL_0_LCR);
+	dll = readb(PRPMC750_SERIAL_0_DLL);
+	dlm = readb(PRPMC750_SERIAL_0_DLM);
+	writeb(lcr & ~UART_LCR_DLAB, PRPMC750_SERIAL_0_LCR);
+	baud_divisor = (dlm << 8) | dll;
+
+	/*
+	 * Use the baud clock divisor and base baud clock
+	 * to determine the baud rate and use that as
+	 * the number of baud clock edges we use for
+	 * the time base sample.  Make it half the baud
+	 * rate.
+	 */
+	count = PRPMC750_BASE_BAUD / (baud_divisor * 16);
+
+	/* Find the first edge of the baud clock */
+	old_state = readb(PRPMC750_STATUS_REG) & PRPMC750_BAUDOUT_MASK;
+	do {
+		current_state = readb(PRPMC750_STATUS_REG) &
+			PRPMC750_BAUDOUT_MASK;
+	} while(old_state == current_state);
+
+	old_state = current_state;
+
+	/* Get the starting time base value */
+	tbl_start = get_tbl();
+
+	/*
+	 * Loop until we have found a number of edges equal
+	 * to half the count (half the baud rate)
+	 */
+	do {
+		do {
+			current_state = readb(PRPMC750_STATUS_REG) &
+				PRPMC750_BAUDOUT_MASK;
+		} while(old_state == current_state);
+		old_state = current_state;
+	} while (--count);
+
+	/* Get the ending time base value */
+	tbl_end = get_tbl();
+
+	/* Compute bus speed */
+	bus_speed = (tbl_end-tbl_start)*128;
+
+	return bus_speed;
+}
+
+static void __init
+prpmc750_calibrate_decr(void)
+{
+	unsigned long freq;
+	int divisor = 4;
+
+	freq = prpmc750_get_bus_speed();
+
+	tb_ticks_per_jiffy = freq / (HZ * divisor);
+	tb_to_us = mulhwu_scale_factor(freq/divisor, 1000000);
+}
+
+static void
+prpmc750_restart(char *cmd)
+{
+	__cli();
+	writeb(PRPMC750_MODRST_MASK, PRPMC750_MODRST_REG);
+	while(1);
+}
+
+static void
+prpmc750_halt(void)
+{
+	__cli();
+	while (1);
+}
+
+static void
+prpmc750_power_off(void)
+{
+	prpmc750_halt();
+}
+
+static void __init
+prpmc750_init_IRQ(void)
+{
+	openpic_init(0);
+}
+
+/*
+ * Set BAT 3 to map 0xf0000000 to end of physical memory space.
+ */
+static __inline__ void
+prpmc750_set_bat(void)
+{
+	mb();
+	mtspr(DBAT1U, 0xf0001ffe);
+	mtspr(DBAT1L, 0xf000002a);
+	mb();
+}
+
+/*
+ * We need to read the Falcon/Hawk memory controller
+ * to properly determine this value
+ */
+static unsigned long __init
+prpmc750_find_end_of_memory(void)
+{
+	/* Read the memory size from the Hawk SMC */
+	return pplus_get_mem_size(PRPMC750_HAWK_SMC_BASE);
+}
+
+static void __init
+prpmc750_map_io(void)
+{
+	io_block_mapping(0x80000000, 0x80000000, 0x10000000, _PAGE_IO);
+	io_block_mapping(0xf0000000, 0xc0000000, 0x08000000, _PAGE_IO);
+	io_block_mapping(0xf8000000, 0xf8000000, 0x08000000, _PAGE_IO);
+}
+
+void __init
+platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+	      unsigned long r6, unsigned long r7)
+{
+	parse_bootinfo(find_bootinfo());
+
+	isa_io_base = PRPMC750_ISA_IO_BASE;
+	isa_mem_base = PRPMC750_ISA_MEM_BASE;
+	pci_dram_offset = PRPMC750_SYS_MEM_BASE;
+
+	prpmc750_set_bat();
+
+	ppc_md.setup_arch	= prpmc750_setup_arch;
+	ppc_md.show_cpuinfo	= prpmc750_show_cpuinfo;
+	ppc_md.init_IRQ		= prpmc750_init_IRQ;
+	ppc_md.get_irq		= openpic_get_irq;
+
+	ppc_md.find_end_of_memory = prpmc750_find_end_of_memory;
+	ppc_md.setup_io_mappings = prpmc750_map_io;
+
+	ppc_md.restart		= prpmc750_restart;
+	ppc_md.power_off	= prpmc750_power_off;
+	ppc_md.halt		= prpmc750_halt;
+
+	/* PrPMC750 has no timekeeper part */
+	ppc_md.time_init	= NULL;
+	ppc_md.get_rtc_time	= NULL;
+	ppc_md.set_rtc_time	= NULL;
+	ppc_md.calibrate_decr	= prpmc750_calibrate_decr;
+
+#ifdef  CONFIG_SERIAL_TEXT_DEBUG
+	ppc_md.progress = gen550_progress;
+#endif  /* CONFIG_SERIAL_TEXT_DEBUG */
+}
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.h linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.h
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750.h	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750.h	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,65 @@
+/*
+ * include/asm-ppc/platforms/prpmc750.h
+ * 
+ * Definitions for Motorola PrPMC750 board support
+ *
+ * Author: Matt Porter <mporter@mvista.com>
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_PRPMC750_H__
+#define __ASM_PRPMC750_H__
+
+#include <linux/serial_reg.h>
+
+#define PRPMC750_PCI_CONFIG_ADDR	0x80000cf8
+#define PRPMC750_PCI_CONFIG_DATA	0x80000cfc
+
+#define PRPMC750_PCI_PHY_MEM_BASE	0xc0000000
+#define PRPMC750_PCI_MEM_BASE		0xf0000000
+#define PRPMC750_PCI_IO_BASE		0x80000000
+
+#define PRPMC750_ISA_IO_BASE		PRPMC750_PCI_IO_BASE
+#define PRPMC750_ISA_MEM_BASE		PRPMC750_PCI_MEM_BASE
+#define PRPMC750_PCI_MEM_OFFSET		PRPMC750_PCI_PHY_MEM_BASE
+
+#define PRPMC750_SYS_MEM_BASE		0x80000000
+
+#define PRPMC750_PCI_LOWER_MEM		0x00000000
+#define PRPMC750_PCI_UPPER_MEM_AUTO	0x3bf7ffff
+#define PRPMC750_PCI_UPPER_MEM		0x3bffffff
+#define PRPMC750_PCI_LOWER_IO		0x00000000
+#define PRPMC750_PCI_UPPER_IO		0x0ff7ffff
+
+#define PRPMC750_HAWK_MPIC_BASE		0xfbf80000
+#define PRPMC750_HAWK_SMC_BASE		0xfef80000
+
+#define PRPMC750_BASE_BAUD		1843200
+#define PRPMC750_SERIAL_0		0xfef88000
+#define PRPMC750_SERIAL_0_DLL		(PRPMC750_SERIAL_0 + (UART_DLL << 4))
+#define PRPMC750_SERIAL_0_DLM		(PRPMC750_SERIAL_0 + (UART_DLM << 4))
+#define PRPMC750_SERIAL_0_LCR		(PRPMC750_SERIAL_0 + (UART_LCR << 4))
+
+#define PRPMC750_STATUS_REG		0xfef88080
+#define PRPMC750_BAUDOUT_MASK		0x02
+#define PRPMC750_MONARCH_MASK		0x01
+
+#define PRPMC750_MODRST_REG		0xfef880a0
+#define PRPMC750_MODRST_MASK		0x01
+
+#define PRPMC750_PIRQ_REG		0xfef880b0
+#define PRPMC750_SEL1_MASK		0x02
+#define PRPMC750_SEL0_MASK		0x01
+
+#define PRPMC750_TBEN_REG		0xfef880c0
+#define PRPMC750_TBEN_MASK		0x01
+
+#endif /* __ASM_PRPMC750_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/prpmc750_serial.h linux-2.4.23-bk19/arch/ppc/platforms/prpmc750_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/prpmc750_serial.h	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/prpmc750_serial.h	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,39 @@
+/*
+ * include/asm-ppc/platforms/prpmc750_serial.h
+ * 
+ * Motorola PrPMC750 serial support
+ *
+ * Author: Matt Porter <mporter@mvista.com>
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_PRPMC750_SERIAL_H__
+#define __ASM_PRPMC750_SERIAL_H__
+
+#include <linux/config.h>
+#include <platforms/prpmc750.h>
+
+#define RS_TABLE_SIZE  4
+
+/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
+#define BASE_BAUD  (PRPMC750_BASE_BAUD / 16)
+
+#ifndef SERIAL_MAGIC_KEY
+#define kernel_debugger ppc_kernel_debug
+#endif
+
+#define SERIAL_PORT_DFNS \
+        { 0, BASE_BAUD, PRPMC750_SERIAL_0, 1, ASYNC_SKIP_TEST, \
+		iomem_base: (unsigned char *)PRPMC750_SERIAL_0, \
+		iomem_reg_shift: 4, \
+		io_type: SERIAL_IO_MEM } /* ttyS0 */
+
+#endif /* __ASM_PRPMC750_SERIAL_H__ */
+#endif /* __KERNEL__ */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/sandpoint.c linux-2.4.23-bk19/arch/ppc/platforms/sandpoint.c
--- linux-2.4.23-bk18/arch/ppc/platforms/sandpoint.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/sandpoint.c	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,742 @@
+/*
+ * arch/ppc/platforms/sandpoint.c
+ *
+ * Board setup routines for the Motorola SPS Sandpoint Test Platform.
+ *
+ * Author: Mark A. Greer
+ *         mgreer@mvista.com
+ *
+ * 2000-2003 (c) MontaVista, Software, Inc.  This file is licensed under
+ * the terms of the GNU General Public License version 2.  This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+/*
+ * This file adds support for the Motorola SPS Sandpoint Test Platform.
+ * These boards have a PPMC slot for the processor so any combination
+ * of cpu and host bridge can be attached.  This port is for an 8240 PPMC
+ * module from Motorola SPS and other closely related cpu/host bridge
+ * combinations (e.g., 750/755/7400 with MPC107 host bridge).
+ * The sandpoint itself has a Windbond 83c553 (PCI-ISA bridge, 2 DMA ctlrs, 2
+ * cascaded 8259 interrupt ctlrs, 8254 Timer/Counter, and an IDE ctlr), a
+ * National 87308 (RTC, 2 UARTs, Keyboard & mouse ctlrs, and a floppy ctlr),
+ * and 4 PCI slots (only 2 of which are usable; the other 2 are keyed for 3.3V
+ * but are really 5V).
+ *
+ * The firmware on the sandpoint is called DINK (not my acronym :).  This port
+ * depends on DINK to do some basic initialization (e.g., initialize the memory
+ * ctlr) and to ensure that the processor is using MAP B (CHRP map).
+ *
+ * The switch settings for the Sandpoint board MUST be as follows:
+ * 	S3: down
+ * 	S4: up
+ * 	S5: up
+ * 	S6: down
+ *
+ * 'down' is in the direction from the PCI slots towards the PPMC slot;
+ * 'up' is in the direction from the PPMC slot towards the PCI slots.
+ * Be careful, the way the sandpoint board is installed in XT chasses will
+ * make the directions reversed.
+ *
+ * Since Motorola listened to our suggestions for improvement, we now have
+ * the Sandpoint X3 board.  All of the PCI slots are available, it uses
+ * the serial interrupt interface (just a hardware thing we need to
+ * configure properly).
+ *
+ * Use the default X3 switch settings.  The interrupts are then:
+ *		EPIC	Source
+ *		  0	SIOINT 		(8259, active low)
+ *		  1	PCI #1
+ *		  2	PCI #2
+ *		  3	PCI #3
+ *		  4	PCI #4
+ *		  7	Winbond INTC	(IDE interrupt)
+ *		  8	Winbond INTD	(IDE interrupt)
+ *
+ * It is important to note that this code only supports the Sandpoint X3
+ * (all flavors) platform, and it does not support the X2 anymore.  Code
+ * that at one time worked on the X2 can be found at:
+ * ftp://source.mvista.com/pub/linuxppc/obsolete/sandpoint/
+ */
+#include <linux/config.h>
+#include <linux/stddef.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/reboot.h>
+#include <linux/pci.h>
+#include <linux/kdev_t.h>
+#include <linux/major.h>
+#include <linux/blk.h>
+#include <linux/console.h>
+#include <linux/delay.h>
+#include <linux/irq.h>
+#include <linux/ide.h>
+#include <linux/irq.h>
+#include <linux/seq_file.h>
+#include <linux/serial.h>
+
+#include <asm/system.h>
+#include <asm/pgtable.h>
+#include <asm/page.h>
+#include <asm/time.h>
+#include <asm/dma.h>
+#include <asm/io.h>
+#include <asm/machdep.h>
+#include <asm/prom.h>
+#include <asm/smp.h>
+#include <asm/keyboard.h>
+#include <asm/vga.h>
+#include <asm/open_pic.h>
+#include <asm/i8259.h>
+#include <asm/todc.h>
+#include <asm/bootinfo.h>
+#include <asm/mpc10x.h>
+#include <asm/pci-bridge.h>
+#include <asm/ppcboot.h>
+
+#include "sandpoint_serial.h"
+
+extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
+extern int pckbd_getkeycode(unsigned int scancode);
+extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
+			   char raw_mode);
+extern char pckbd_unexpected_up(unsigned char keycode);
+extern void pckbd_leds(unsigned char leds);
+extern void pckbd_init_hw(void);
+extern unsigned char pckbd_sysrq_xlate[128];
+
+extern void gen550_progress(char *, unsigned short);
+extern void gen550_init(int, struct serial_struct *);
+
+unsigned char __res[sizeof (bd_t)];
+
+static void sandpoint_halt(void);
+
+/*
+ * Define all of the IRQ senses and polarities.  Taken from the
+ * Sandpoint X3 User's manual.
+ */
+static u_char sandpoint_openpic_initsenses[] __initdata = {
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 0: SIOINT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 2: PCI Slot 1 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 3: PCI Slot 2 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 4: PCI Slot 3 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 5: PCI Slot 4 */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* 8: IDE (INT C) */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE)	/* 9: IDE (INT D) */
+};
+
+/*
+ * Motorola SPS Sandpoint interrupt routing.
+ */
+static inline int
+sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+	static char pci_irq_table[][4] =
+	    /*
+	     *      PCI IDSEL/INTPIN->INTLINE
+	     *         A   B   C   D
+	     */
+	{
+		{16,  0,  0,  0},	/* IDSEL 11 - i8259 on Windbond */
+		{ 0,  0,  0,  0},	/* IDSEL 12 - unused */
+		{17, 18, 19, 20},	/* IDSEL 13 - PCI slot 1 */
+		{18, 19, 20, 17},	/* IDSEL 14 - PCI slot 2 */
+		{19, 20, 17, 18},	/* IDSEL 15 - PCI slot 3 */
+		{20, 17, 18, 19},	/* IDSEL 16 - PCI slot 4 */
+	};
+
+	const long min_idsel = 11, max_idsel = 16, irqs_per_slot = 4;
+	return PCI_IRQ_TABLE_LOOKUP;
+}
+
+static void __init
+sandpoint_setup_winbond_83553(struct pci_controller *hose)
+{
+	int devfn;
+
+	/*
+	 * Route IDE interrupts directly to the 8259's IRQ 14 & 15.
+	 * We can't route the IDE interrupt to PCI INTC# or INTD# because those
+	 * woule interfere with the PMC's INTC# and INTD# lines.
+	 */
+	/*
+	 * Winbond Fcn 0
+	 */
+	devfn = PCI_DEVFN(11, 0);
+
+	/* IDE Interrupt Routing Control */
+	early_write_config_byte(hose, 0, devfn, 0x43, 0xef);
+
+	/* PCI Interrupt Routing Control */
+	early_write_config_word(hose, 0, devfn, 0x44, 0x0000);
+
+	/* Want ISA memory cycles to be forwarded to PCI bus.
+	 * ISA-to-PCI Addr Decoder Control.
+	 */
+	early_write_config_byte(hose, 0, devfn, 0x48, 0xf0);
+
+	/* Enable RTC and Keyboard address locations. */
+	early_write_config_byte(hose, 0, devfn, 0x4d, 0x00);
+
+	/* Enable Port 92.  */
+	early_write_config_byte(hose, 0, devfn, 0x4e, 0x06);
+
+	/*
+	 * Winbond Fcn 1
+	 */
+	devfn = PCI_DEVFN(11, 1);
+
+	/* Put IDE controller into native mode (via PIR). */
+	early_write_config_byte(hose, 0, devfn, 0x09, 0x8f);
+
+	/* Init IRQ routing, enable both ports, disable fast 16, via
+	 * IDE Control/Status Register.
+	 */
+	early_write_config_dword(hose, 0, devfn, 0x40, 0x00ff0011);
+}
+
+static void __init
+sandpoint_find_bridges(void)
+{
+	struct pci_controller *hose;
+
+	hose = pcibios_alloc_controller();
+
+	if (!hose)
+		return;
+
+	hose->first_busno = 0;
+	hose->last_busno = 0xff;
+
+	if (mpc10x_bridge_init(hose,
+			       MPC10X_MEM_MAP_B,
+			       MPC10X_MEM_MAP_B, MPC10X_MAPB_EUMB_BASE) == 0) {
+
+		/* Do early winbond init, then scan PCI bus */
+		sandpoint_setup_winbond_83553(hose);
+		hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+
+		ppc_md.pcibios_fixup = NULL;
+		ppc_md.pcibios_fixup_bus = NULL;
+		ppc_md.pci_swizzle = common_swizzle;
+		ppc_md.pci_map_irq = sandpoint_map_irq;
+	} else {
+		if (ppc_md.progress)
+			ppc_md.progress("Bridge init failed", 0x100);
+		printk("Host bridge init failed\n");
+	}
+
+	return;
+}
+
+#ifdef CONFIG_SERIAL
+static void __init
+sandpoint_early_serial_map(void)
+{
+	struct serial_struct serial_req;
+
+	/* Setup serial port access */
+	memset(&serial_req, 0, sizeof (serial_req));
+	serial_req.baud_base = BASE_BAUD;
+	serial_req.line = 0;
+	serial_req.port = 0;
+	serial_req.irq = 4;
+	serial_req.flags = ASYNC_BOOT_AUTOCONF;
+	serial_req.io_type = SERIAL_IO_MEM;
+	serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_0;
+	serial_req.iomem_reg_shift = 0;
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+	gen550_init(0, &serial_req);
+#endif
+
+	if (early_serial_setup(&serial_req) != 0)
+		printk("Early serial init of port 0 failed\n");
+
+	/* Assume early_serial_setup() doesn't modify serial_req */
+	serial_req.line = 1;
+	serial_req.port = 1;
+	serial_req.irq = 3;	/* XXXX */
+	serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_1;
+
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+	gen550_init(1, &serial_req);
+#endif
+
+	if (early_serial_setup(&serial_req) != 0)
+		printk("Early serial init of port 1 failed\n");
+}
+#endif
+
+static void __init
+sandpoint_setup_arch(void)
+{
+	loops_per_jiffy = 100000000 / HZ;
+
+#ifdef CONFIG_BLK_DEV_INITRD
+	if (initrd_start)
+		ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
+	else
+#endif
+#ifdef	CONFIG_ROOT_NFS
+		ROOT_DEV = to_kdev_t(0x00FF);	/* /dev/nfs pseudo device */
+#else
+		ROOT_DEV = to_kdev_t(0x0301);	/* /dev/hda1 IDE disk */
+#endif
+
+	/* Lookup PCI host bridges */
+	sandpoint_find_bridges();
+
+#ifdef CONFIG_SERIAL
+	sandpoint_early_serial_map();
+#endif
+
+#ifdef CONFIG_DUMMY_CONSOLE
+	conswitchp = &dummy_con;
+#endif
+
+	printk(KERN_INFO "Motorola SPS Sandpoint Test Platform\n");
+
+	/* DINK32 12.3 and below do not correctly enable any caches.
+	 * We will do this now with good known values.  Future versions
+	 * of DINK32 are supposed to get this correct.
+	 */
+	if (cur_cpu_spec[0]->cpu_features & CPU_FTR_SPEC7450)
+		/* 745x is different.  We only want to pass along enable. */
+		_set_L2CR(L2CR_L2E);
+	else if (cur_cpu_spec[0]->cpu_features & CPU_FTR_L2CR)
+		/* All modules have 1MB of L2.  We also assume that an
+		 * L2 divisor of 3 will work.
+		 */
+		_set_L2CR(L2CR_L2E | L2CR_L2SIZ_1MB | L2CR_L2CLK_DIV3
+			  | L2CR_L2RAM_PIPE | L2CR_L2OH_1_0 | L2CR_L2DF);
+#if 0
+	/* Untested right now. */
+	if (cur_cpu_spec[0]->cpu_features & CPU_FTR_L3CR) {
+		/* Magic value. */
+		_set_L3CR(0x8f032000);
+	}
+#endif
+}
+
+#define	SANDPOINT_87308_CFG_ADDR		0x15c
+#define	SANDPOINT_87308_CFG_DATA		0x15d
+
+#define	SANDPOINT_87308_CFG_INB(addr, byte) {				\
+	outb((addr), SANDPOINT_87308_CFG_ADDR);				\
+	(byte) = inb(SANDPOINT_87308_CFG_DATA);				\
+}
+
+#define	SANDPOINT_87308_CFG_OUTB(addr, byte) {				\
+	outb((addr), SANDPOINT_87308_CFG_ADDR);				\
+	outb((byte), SANDPOINT_87308_CFG_DATA);				\
+}
+
+#define SANDPOINT_87308_SELECT_DEV(dev_num) {				\
+	SANDPOINT_87308_CFG_OUTB(0x07, (dev_num));			\
+}
+
+#define	SANDPOINT_87308_DEV_ENABLE(dev_num) {				\
+	SANDPOINT_87308_SELECT_DEV(dev_num);				\
+	SANDPOINT_87308_CFG_OUTB(0x30, 0x01);				\
+}
+
+/*
+ * Initialize the ISA devices on the Nat'l PC87308VUL SuperIO chip.
+ */
+static void __init
+sandpoint_setup_natl_87308(void)
+{
+	u_char reg;
+
+	/*
+	 * Enable all the devices on the Super I/O chip.
+	 */
+	SANDPOINT_87308_SELECT_DEV(0x00);	/* Select kbd logical device */
+	SANDPOINT_87308_CFG_OUTB(0xf0, 0x00);	/* Set KBC clock to 8 Mhz */
+	SANDPOINT_87308_DEV_ENABLE(0x00);	/* Enable keyboard */
+	SANDPOINT_87308_DEV_ENABLE(0x01);	/* Enable mouse */
+	SANDPOINT_87308_DEV_ENABLE(0x02);	/* Enable rtc */
+	SANDPOINT_87308_DEV_ENABLE(0x03);	/* Enable fdc (floppy) */
+	SANDPOINT_87308_DEV_ENABLE(0x04);	/* Enable parallel */
+	SANDPOINT_87308_DEV_ENABLE(0x05);	/* Enable UART 2 */
+	SANDPOINT_87308_CFG_OUTB(0xf0, 0x82);	/* Enable bank select regs */
+	SANDPOINT_87308_DEV_ENABLE(0x06);	/* Enable UART 1 */
+	SANDPOINT_87308_CFG_OUTB(0xf0, 0x82);	/* Enable bank select regs */
+
+	/* Set up floppy in PS/2 mode */
+	outb(0x09, SIO_CONFIG_RA);
+	reg = inb(SIO_CONFIG_RD);
+	reg = (reg & 0x3F) | 0x40;
+	outb(reg, SIO_CONFIG_RD);
+	outb(reg, SIO_CONFIG_RD);	/* Have to write twice to change! */
+
+	return;
+}
+
+/*
+ * Fix IDE interrupts.
+ */
+static void __init
+sandpoint_fix_winbond_83553(void)
+{
+	/* Make all 8259 interrupt level sensitive */
+	outb(0xf8, 0x4d0);
+	outb(0xde, 0x4d1);
+
+	return;
+}
+
+static void __init
+sandpoint_init2(void)
+{
+	/* Do Sandpoint board specific initialization.  */
+	sandpoint_fix_winbond_83553();
+	sandpoint_setup_natl_87308();
+
+	request_region(0x00, 0x20, "dma1");
+	request_region(0x20, 0x20, "pic1");
+	request_region(0x40, 0x20, "timer");
+	request_region(0x80, 0x10, "dma page reg");
+	request_region(0xa0, 0x20, "pic2");
+	request_region(0xc0, 0x20, "dma2");
+
+	return;
+}
+
+/*
+ * Interrupt setup and service.  The i8259 is cascaded from EPIC IRQ0,
+ * IRQ1-4 map to PCI slots 1-4, IDE is on EPIC 7 and 8.
+ */
+static void __init
+sandpoint_init_IRQ(void)
+{
+	int i;
+
+	OpenPIC_InitSenses = sandpoint_openpic_initsenses;
+	OpenPIC_NumInitSenses = sizeof (sandpoint_openpic_initsenses);
+
+	/*
+	 * We need to tell openpic_set_sources where things actually are.
+	 * mpc10x_common will setup OpenPIC_Addr at ioremap(EUMB phys base +
+	 * EPIC offset (0x40000));  The EPIC IRQ Register Address Map -
+	 * Interrupt Source Configuration Registers gives these numbers
+	 * as offsets starting at 0x50200, we need to adjust occordinly.
+	 */
+
+	/* Map serial interrupt 0 */
+	openpic_set_sources(0, 1, OpenPIC_Addr + 0x10200);
+	/* Map serial interrupts 2-5 */
+	openpic_set_sources(1, 4, OpenPIC_Addr + 0x10240);
+	/* Map serial interrupts 8-9 */
+	openpic_set_sources(5, 2, OpenPIC_Addr + 0x10300);
+	/* Skip reserved space and map i2c and DMA Ch[01] */
+	openpic_set_sources(7, 3, OpenPIC_Addr + 0x11020);
+	/* Skip reserved space and map Message Unit Interrupt (I2O) */
+	openpic_set_sources(10, 1, OpenPIC_Addr + 0x110C0);
+
+	openpic_init(NUM_8259_INTERRUPTS);
+	/* The cascade is on EPIC IRQ 0 (Linux IRQ 16). */
+	openpic_hookup_cascade(16, "8259 cascade to EPIC", &i8259_irq);
+
+	/*
+	 * openpic_init() has set up irq_desc[0-23] to be openpic
+	 * interrupts.  We need to set irq_desc[0-15] to be 8259 interrupts.
+	 * We then need to request and enable the 8259 irq.
+	 */
+	for (i = 0; i < NUM_8259_INTERRUPTS; i++)
+		irq_desc[i].handler = &i8259_pic;
+
+	/*
+	 * The EPIC allows for a read in the range of 0xFEF00000 ->
+	 * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction.
+	 */
+	i8259_init(0xfef00000);
+}
+
+static u32
+sandpoint_irq_cannonicalize(u32 irq)
+{
+	if (irq == 2)
+		return 9;
+	else
+		return irq;
+}
+
+static unsigned long __init
+sandpoint_find_end_of_memory(void)
+{
+	bd_t *bp = (bd_t *) __res;
+
+	if (bp->bi_memsize)
+		return bp->bi_memsize;
+
+	/* This might be fixed in DINK32 12.4, or we'll have another
+	 * way to determine the correct memory size anyhow. */
+	/* return mpc10x_get_mem_size(MPC10X_MEM_MAP_B); */
+	return 32 * 1024 * 1024;
+}
+
+static void __init
+sandpoint_map_io(void)
+{
+	io_block_mapping(0xfe000000, 0xfe000000, 0x02000000, _PAGE_IO);
+}
+
+static void
+sandpoint_restart(char *cmd)
+{
+	__cli();
+
+	/* Set exception prefix high - to the firmware */
+	_nmask_and_or_msr(0, MSR_IP);
+
+	/* Reset system via Port 92 */
+	outb(0x00, 0x92);
+	outb(0x01, 0x92);
+	for (;;) ;		/* Spin until reset happens */
+}
+
+static void
+sandpoint_power_off(void)
+{
+	__cli();
+	for (;;) ;		/* No way to shut power off with software */
+	/* NOTREACHED */
+}
+
+static void
+sandpoint_halt(void)
+{
+	sandpoint_power_off();
+	/* NOTREACHED */
+}
+
+static int
+sandpoint_show_cpuinfo(struct seq_file *m)
+{
+	seq_printf(m, "vendor\t\t: Motorola SPS\n");
+	seq_printf(m, "machine\t\t: Sandpoint\n");
+
+	return 0;
+}
+
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
+/*
+ * IDE support.
+ */
+static int sandpoint_ide_ports_known = 0;
+static ide_ioreg_t sandpoint_ide_regbase[MAX_HWIFS];
+static ide_ioreg_t sandpoint_ide_ctl_regbase[MAX_HWIFS];
+static ide_ioreg_t sandpoint_idedma_regbase;
+
+static void
+sandpoint_ide_probe(void)
+{
+	struct pci_dev *pdev = pci_find_device(PCI_VENDOR_ID_WINBOND,
+					       PCI_DEVICE_ID_WINBOND_82C105,
+					       NULL);
+
+	if (pdev) {
+		sandpoint_ide_regbase[0] = pdev->resource[0].start;
+		sandpoint_ide_regbase[1] = pdev->resource[2].start;
+		sandpoint_ide_ctl_regbase[0] = pdev->resource[1].start;
+		sandpoint_ide_ctl_regbase[1] = pdev->resource[3].start;
+		sandpoint_idedma_regbase = pdev->resource[4].start;
+	}
+
+	sandpoint_ide_ports_known = 1;
+	return;
+}
+
+/* The Sandpoint X3 allows the IDE interrupt to be directly connected
+ * from the Windbond (PCI INTC or INTD) to the serial EPIC.  Someday
+ * we should try this, but it was easier to use the existing 83c553
+ * initialization than change it to route the different interrupts :-).
+ *	-- Dan
+ */
+#if 0
+#define SANDPOINT_IDE_INT0	23	/* EPIC 7 */
+#define SANDPOINT_IDE_INT1	24	/* EPIC 8 */
+#else
+#define SANDPOINT_IDE_INT0	14	/* 8259 Test */
+#define SANDPOINT_IDE_INT1	15	/* 8259 Test */
+#endif
+static int
+sandpoint_ide_default_irq(ide_ioreg_t base)
+{
+	if (sandpoint_ide_ports_known == 0)
+		sandpoint_ide_probe();
+
+	if (base == sandpoint_ide_regbase[0])
+		return SANDPOINT_IDE_INT0;
+	else if (base == sandpoint_ide_regbase[1])
+		return SANDPOINT_IDE_INT1;
+	else
+		return 0;
+}
+
+static ide_ioreg_t
+sandpoint_ide_default_io_base(int index)
+{
+	if (sandpoint_ide_ports_known == 0)
+		sandpoint_ide_probe();
+
+	return sandpoint_ide_regbase[index];
+}
+
+static void __init
+sandpoint_ide_init_hwif_ports(hw_regs_t * hw, ide_ioreg_t data_port,
+			      ide_ioreg_t ctrl_port, int *irq)
+{
+	ide_ioreg_t reg = data_port;
+	unsigned int alt_status_base;
+	int i;
+
+	for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
+		hw->io_ports[i] = reg++;
+
+	if (data_port == sandpoint_ide_regbase[0]) {
+		alt_status_base = sandpoint_ide_ctl_regbase[0] + 2;
+		hw->irq = 14;
+	} else if (data_port == sandpoint_ide_regbase[1]) {
+		alt_status_base = sandpoint_ide_ctl_regbase[1] + 2;
+		hw->irq = 15;
+	} else {
+		alt_status_base = 0;
+		hw->irq = 0;
+	}
+
+	if (ctrl_port)
+		hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
+	else
+		hw->io_ports[IDE_CONTROL_OFFSET] = alt_status_base;
+
+	if (irq != NULL)
+		*irq = hw->irq;
+
+	return;
+}
+#endif
+
+/*
+ * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1.
+ */
+static __inline__ void
+sandpoint_set_bat(void)
+{
+#if 1
+	mb();
+	mtspr(DBAT1U, 0xf8000ffe);
+	mtspr(DBAT1L, 0xf800002a);
+	mb();
+#else
+	unsigned long bat3u, bat3l;
+
+	__asm__ __volatile__(" lis %0,0xf800\n	\
+			ori %1,%0,0x002a\n	\
+			ori %0,%0,0x0ffe\n	\
+			mtspr 0x21e,%0\n	\
+			mtspr 0x21f,%1\n	\
+			isync\n			\
+			sync ":"=r"(bat3u), "=r"(bat3l));
+#endif
+}
+
+TODC_ALLOC();
+
+void __init
+platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
+	      unsigned long r6, unsigned long r7)
+{
+	parse_bootinfo(find_bootinfo());
+
+	/* ASSUMPTION:  If both r3 (bd_t pointer) and r6 (cmdline pointer)
+	 * are non-zero, then we should use the board info from the bd_t
+	 * structure and the cmdline pointed to by r6 instead of the
+	 * information from birecs, if any.  Otherwise, use the information
+	 * from birecs as discovered by the preceeding call to
+	 * parse_bootinfo().  This rule should work with both PPCBoot, which
+	 * uses a bd_t board info structure, and the kernel boot wrapper,
+	 * which uses birecs.
+	 */
+	if (r3 && r6) {
+		/* copy board info structure */
+		memcpy((void *) __res, (void *) (r3 + KERNELBASE),
+		       sizeof (bd_t));
+		/* copy command line */
+		*(char *) (r7 + KERNELBASE) = 0;
+		strcpy(cmd_line, (char *) (r6 + KERNELBASE));
+	}
+#ifdef CONFIG_BLK_DEV_INITRD
+	/* take care of initrd if we have one */
+	if (r4) {
+		initrd_start = r4 + KERNELBASE;
+		initrd_end = r5 + KERNELBASE;
+	}
+#endif				/* CONFIG_BLK_DEV_INITRD */
+
+	/* Map in board regs, etc. */
+	sandpoint_set_bat();
+
+	isa_io_base = MPC10X_MAPB_ISA_IO_BASE;
+	isa_mem_base = MPC10X_MAPB_ISA_MEM_BASE;
+	pci_dram_offset = MPC10X_MAPB_DRAM_OFFSET;
+	ISA_DMA_THRESHOLD = 0x00ffffff;
+	DMA_MODE_READ = 0x44;
+	DMA_MODE_WRITE = 0x48;
+
+	ppc_md.setup_arch = sandpoint_setup_arch;
+	ppc_md.show_cpuinfo = sandpoint_show_cpuinfo;
+	ppc_md.irq_cannonicalize = sandpoint_irq_cannonicalize;
+	ppc_md.init_IRQ = sandpoint_init_IRQ;
+	ppc_md.get_irq = openpic_get_irq;
+	ppc_md.init = sandpoint_init2;
+
+	ppc_md.restart = sandpoint_restart;
+	ppc_md.power_off = sandpoint_power_off;
+	ppc_md.halt = sandpoint_halt;
+
+	ppc_md.find_end_of_memory = sandpoint_find_end_of_memory;
+	ppc_md.setup_io_mappings = sandpoint_map_io;
+
+	TODC_INIT(TODC_TYPE_PC97307, 0x70, 0x00, 0x71, 8);
+	ppc_md.time_init = todc_time_init;
+	ppc_md.set_rtc_time = todc_set_rtc_time;
+	ppc_md.get_rtc_time = todc_get_rtc_time;
+	ppc_md.calibrate_decr = todc_calibrate_decr;
+
+	ppc_md.nvram_read_val = todc_mc146818_read_val;
+	ppc_md.nvram_write_val = todc_mc146818_write_val;
+
+#ifdef CONFIG_SERIAL
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
+	ppc_md.progress = gen550_progress;
+#endif
+	ppc_md.early_serial_map = sandpoint_early_serial_map;
+#endif
+
+#ifdef CONFIG_VT
+	ppc_md.kbd_setkeycode = pckbd_setkeycode;
+	ppc_md.kbd_getkeycode = pckbd_getkeycode;
+	ppc_md.kbd_translate = pckbd_translate;
+	ppc_md.kbd_unexpected_up = pckbd_unexpected_up;
+	ppc_md.kbd_leds = pckbd_leds;
+	ppc_md.kbd_init_hw = pckbd_init_hw;
+#ifdef CONFIG_MAGIC_SYSRQ
+	ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate;
+	SYSRQ_KEY = 0x54;
+#endif
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
+	ppc_ide_md.default_irq = sandpoint_ide_default_irq;
+	ppc_ide_md.default_io_base = sandpoint_ide_default_io_base;
+	ppc_ide_md.ide_init_hwif = sandpoint_ide_init_hwif_ports;
+#endif
+
+	return;
+}
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/sandpoint_serial.h linux-2.4.23-bk19/arch/ppc/platforms/sandpoint_serial.h
--- linux-2.4.23-bk18/arch/ppc/platforms/sandpoint_serial.h	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/arch/ppc/platforms/sandpoint_serial.h	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,47 @@
+/*
+ * include/asm-ppc/sandpoint_serial.h
+ * 
+ * Definitions for Motorola SPS Sandpoint Test Platform
+ *
+ * Author: Mark A. Greer
+ *         mgreer@mvista.com
+ *
+ * Copyright 2001 MontaVista Software Inc.
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+#ifndef __ASMPPC_SANDPOINT_SERIAL_H
+#define __ASMPPC_SANDPOINT_SERIAL_H
+
+#include <linux/config.h>
+
+#define SANDPOINT_SERIAL_0		0xfe0003f8
+#define SANDPOINT_SERIAL_1		0xfe0002f8
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define RS_TABLE_SIZE  64
+#else
+#define RS_TABLE_SIZE  2
+#endif
+
+/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
+#define BASE_BAUD ( 1843200 / 16 )
+
+#define STD_SERIAL_PORT_DFNS \
+	/* ttyS0 */							\
+        { 0, BASE_BAUD, SANDPOINT_SERIAL_0, 4, ASYNC_BOOT_AUTOCONF,	\
+		iomem_base: (u8 *)SANDPOINT_SERIAL_0,			\
+		io_type: SERIAL_IO_MEM },				\
+	/* ttyS1 */							\
+        { 0, BASE_BAUD, SANDPOINT_SERIAL_1, 3, ASYNC_BOOT_AUTOCONF,	\
+		iomem_base: (u8 *)SANDPOINT_SERIAL_1,			\
+		io_type: SERIAL_IO_MEM },
+
+#define SERIAL_PORT_DFNS \
+        STD_SERIAL_PORT_DFNS
+
+#endif /* __ASMPPC_SANDPOINT_SERIAL_H */
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/spruce.h linux-2.4.23-bk19/arch/ppc/platforms/spruce.h
--- linux-2.4.23-bk18/arch/ppc/platforms/spruce.h	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/spruce.h	2003-12-30 02:50:29.000000000 -0800
@@ -70,7 +70,7 @@
 
 #define STD_UART_OP(num)					\
 	{ 0, BASE_BAUD, 0, UART##num##_INT,			\
-		(ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST),	\
+		ASYNC_BOOT_AUTOCONF,				\
 		iomem_base: UART##num##_IO_BASE,		\
 		io_type: SERIAL_IO_MEM},
 
diff -urN linux-2.4.23-bk18/arch/ppc/platforms/spruce_setup.c linux-2.4.23-bk19/arch/ppc/platforms/spruce_setup.c
--- linux-2.4.23-bk18/arch/ppc/platforms/spruce_setup.c	2003-06-13 07:51:31.000000000 -0700
+++ linux-2.4.23-bk19/arch/ppc/platforms/spruce_setup.c	2003-12-30 02:50:29.000000000 -0800
@@ -132,7 +132,7 @@
 	serial_req.line = 0;
 	serial_req.port = 0;
 	serial_req.irq = 3;
-	serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
+	serial_req.flags = ASYNC_BOOT_AUTOCONF;
 	serial_req.io_type = SERIAL_IO_MEM;
 	serial_req.iomem_base = (u_char *)UART0_IO_BASE;
 	serial_req.iomem_reg_shift = 0;
diff -urN linux-2.4.23-bk18/drivers/block/cciss.c linux-2.4.23-bk19/drivers/block/cciss.c
--- linux-2.4.23-bk18/drivers/block/cciss.c	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/block/cciss.c	2003-12-30 02:50:29.000000000 -0800
@@ -2677,11 +2677,13 @@
 	}
 
 #ifdef CONFIG_X86
+{
 	/* Need to enable prefetch in the SCSI core for 6400 in x86 */
 	__u32 prefetch;
 	prefetch = readl(&(c->cfgtable->SCSI_Prefetch));
 	prefetch |= 0x100;
 	writel(prefetch, &(c->cfgtable->SCSI_Prefetch));
+}
 #endif
 
 #ifdef CCISS_DEBUG
diff -urN linux-2.4.23-bk18/drivers/char/Config.in linux-2.4.23-bk19/drivers/char/Config.in
--- linux-2.4.23-bk18/drivers/char/Config.in	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/Config.in	2003-12-30 02:50:29.000000000 -0800
@@ -274,6 +274,9 @@
       dep_tristate '  Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
    fi
    dep_tristate '  AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
+   if [ "$CONFIG_8xx" = "y" ]; then
+      tristate '  MPC8xx Watchdog Timer' CONFIG_8xx_WDT
+   fi
 fi
 endmenu
 
@@ -285,7 +288,8 @@
    fi
    tristate 'NetWinder flash support' CONFIG_NWFLASH
 fi
-dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
+tristate 'NatSemi SCx200 Support' CONFIG_SCx200
+dep_tristate '  NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
 
 if [ "$CONFIG_IA64_GENERIC" = "y" -o "$CONFIG_IA64_SGI_SN2" = "y" ] ; then
    bool 'SGI SN2 fetchop support' CONFIG_FETCHOP
diff -urN linux-2.4.23-bk18/drivers/char/Makefile linux-2.4.23-bk19/drivers/char/Makefile
--- linux-2.4.23-bk18/drivers/char/Makefile	2003-12-30 02:50:24.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -288,7 +288,8 @@
 obj-$(CONFIG_DZ) += dz.o
 obj-$(CONFIG_NWBUTTON) += nwbutton.o
 obj-$(CONFIG_NWFLASH) += nwflash.o
-obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
+obj-$(CONFIG_SCx200) += scx200.o
+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o
 
 # Only one watchdog can succeed. We probe the hardware watchdog
 # drivers first, then the softdog driver.  This means if your hardware
@@ -320,6 +321,7 @@
 obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
 obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
 obj-$(CONFIG_INDYDOG) += indydog.o
+obj-$(CONFIG_8xx_WDT) += mpc8xx_wdt.o
 
 subdir-$(CONFIG_MWAVE) += mwave
 ifeq ($(CONFIG_MWAVE),y)
diff -urN linux-2.4.23-bk18/drivers/char/mpc8xx_wdt.c linux-2.4.23-bk19/drivers/char/mpc8xx_wdt.c
--- linux-2.4.23-bk18/drivers/char/mpc8xx_wdt.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/drivers/char/mpc8xx_wdt.c	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,191 @@
+/*
+ * mpc8xx_wdt.c - MPC8xx watchdog userspace interface
+ *
+ * Copyright (C) 2002 Florian Schirmer <jolt@tuxbox.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include <linux/config.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/miscdevice.h>
+#include <linux/module.h>
+#include <linux/watchdog.h>
+#include <asm/8xx_immap.h>
+#include <asm/uaccess.h>
+
+extern int m8xx_wdt_get_timeout(void);
+extern void m8xx_wdt_reset(void);
+
+static struct semaphore wdt_sem;
+static int wdt_status;
+
+static struct watchdog_info ident = {
+	.identity = "MPC8xx watchdog",
+	.options = WDIOF_KEEPALIVEPING,
+};
+
+static void
+mpc8xx_wdt_handler_disable(void)
+{
+	volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+	imap->im_sit.sit_piscr &= ~(PISCR_PIE | PISCR_PTE);
+
+	printk(KERN_NOTICE "mpc8xx_wdt: keep-alive handler deactivated\n");
+}
+
+static void
+mpc8xx_wdt_handler_enable(void)
+{
+	volatile immap_t *imap = (volatile immap_t *) IMAP_ADDR;
+
+	imap->im_sit.sit_piscr |= PISCR_PIE | PISCR_PTE;
+
+	printk(KERN_NOTICE "mpc8xx_wdt: keep-alive handler activated\n");
+}
+
+static int
+mpc8xx_wdt_open(struct inode *inode, struct file *file)
+{
+	switch (MINOR(inode->i_rdev)) {
+	case WATCHDOG_MINOR:
+		if (down_trylock(&wdt_sem))
+			return -EBUSY;
+
+		m8xx_wdt_reset();
+		mpc8xx_wdt_handler_disable();
+		break;
+
+	default:
+		return -ENODEV;
+	}
+
+	return 0;
+}
+
+static int
+mpc8xx_wdt_release(struct inode *inode, struct file *file)
+{
+	m8xx_wdt_reset();
+
+#if !defined(CONFIG_WATCHDOG_NOWAYOUT)
+	mpc8xx_wdt_handler_enable();
+#endif
+
+	up(&wdt_sem);
+
+	return 0;
+}
+
+static ssize_t
+mpc8xx_wdt_write(struct file *file, const char *data, size_t len, loff_t * ppos)
+{
+	/* Can't seek (pwrite) on this device */
+	if (ppos != &file->f_pos)
+		return -ESPIPE;
+
+	if (!len)
+		return 0;
+
+	m8xx_wdt_reset();
+
+	return 1;
+}
+
+static int
+mpc8xx_wdt_ioctl(struct inode *inode, struct file *file,
+		 unsigned int cmd, unsigned long arg)
+{
+	switch (cmd) {
+	case WDIOC_GETSUPPORT:
+		if (copy_to_user((void *) arg, &ident, sizeof (ident)))
+			return -EFAULT;
+		break;
+
+	case WDIOC_GETSTATUS:
+	case WDIOC_GETBOOTSTATUS:
+		if (put_user(wdt_status, (int *) arg))
+			return -EFAULT;
+		wdt_status &= ~WDIOF_KEEPALIVEPING;
+		break;
+
+	case WDIOC_KEEPALIVE:
+		m8xx_wdt_reset();
+		wdt_status |= WDIOF_KEEPALIVEPING;
+		break;
+
+	case WDIOC_GETTIMEOUT:
+		{
+			int timeout = m8xx_wdt_get_timeout();
+			if (put_user(timeout, (int *) arg))
+				return -EFAULT;
+			break;
+		}
+
+	default:
+		return -ENOTTY;
+	}
+
+	return 0;
+}
+
+static struct file_operations mpc8xx_wdt_fops = {
+	.owner = THIS_MODULE,
+	.write = mpc8xx_wdt_write,
+	.ioctl = mpc8xx_wdt_ioctl,
+	.open = mpc8xx_wdt_open,
+	.release = mpc8xx_wdt_release,
+};
+
+static struct miscdevice mpc8xx_wdt_miscdev = {
+	.minor = WATCHDOG_MINOR,
+	.name = "watchdog",
+	.fops = &mpc8xx_wdt_fops,
+};
+
+static int __init
+mpc8xx_wdt_init(void)
+{
+	int ret;
+
+	sema_init(&wdt_sem, 1);
+
+	if ((ret = misc_register(&mpc8xx_wdt_miscdev))) {
+		printk(KERN_WARNING
+		       "mpc8xx_wdt: could not register userspace interface\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+static void __exit
+mpc8xx_wdt_exit(void)
+{
+	misc_deregister(&mpc8xx_wdt_miscdev);
+
+	m8xx_wdt_reset();
+	mpc8xx_wdt_handler_enable();
+}
+
+module_init(mpc8xx_wdt_init);
+module_exit(mpc8xx_wdt_exit);
+
+MODULE_AUTHOR("Florian Schirmer <jolt@tuxbox.org>");
+MODULE_DESCRIPTION("MPC8xx watchdog driver");
+MODULE_LICENSE("GPL");
diff -urN linux-2.4.23-bk18/drivers/i2c/Config.in linux-2.4.23-bk19/drivers/i2c/Config.in
--- linux-2.4.23-bk18/drivers/i2c/Config.in	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/Config.in	2003-12-30 02:50:29.000000000 -0800
@@ -12,15 +12,16 @@
    if [ "$CONFIG_I2C_ALGOBIT" != "n" ]; then
       dep_tristate '  Philips style parallel port adapter' CONFIG_I2C_PHILIPSPAR $CONFIG_I2C_ALGOBIT $CONFIG_PARPORT
       dep_tristate '  ELV adapter' CONFIG_I2C_ELV $CONFIG_I2C_ALGOBIT
-      dep_tristate '  Velleman K9000 adapter' CONFIG_I2C_VELLEMAN $CONFIG_I2C_ALGOBIT
+      dep_tristate '  Velleman K8000 adapter' CONFIG_I2C_VELLEMAN $CONFIG_I2C_ALGOBIT
       dep_tristate '  NatSemi SCx200 I2C using GPIO pins' CONFIG_SCx200_I2C $CONFIG_SCx200 $CONFIG_I2C_ALGOBIT
       if [ "$CONFIG_SCx200_I2C" != "n" ]; then
          int  '    GPIO pin used for SCL' CONFIG_SCx200_I2C_SCL 12
          int  '    GPIO pin used for SDA' CONFIG_SCx200_I2C_SDA 13
       fi
-      dep_tristate '  NatSemi SCx200 ACCESS.bus' CONFIG_SCx200_ACB $CONFIG_I2C
    fi
 
+   dep_tristate 'NatSemi SCx200 ACCESS.bus' CONFIG_SCx200_ACB $CONFIG_I2C
+
    dep_tristate 'I2C PCF 8584 interfaces' CONFIG_I2C_ALGOPCF $CONFIG_I2C
    if [ "$CONFIG_I2C_ALGOPCF" != "n" ]; then
       dep_tristate '  Elektor ISA card' CONFIG_I2C_ELEKTOR $CONFIG_I2C_ALGOPCF
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-adap-ite.c linux-2.4.23-bk19/drivers/i2c/i2c-adap-ite.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-adap-ite.c	2002-08-02 17:39:44.000000000 -0700
+++ linux-2.4.23-bk19/drivers/i2c/i2c-adap-ite.c	2003-12-30 02:50:29.000000000 -0800
@@ -38,7 +38,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <asm/irq.h>
 #include <asm/io.h>
@@ -61,11 +60,7 @@
 
 static int i2c_debug=0;
 static struct iic_ite gpi;
-#if (LINUX_VERSION_CODE < 0x020301)
-static struct wait_queue *iic_wait = NULL;
-#else
 static wait_queue_head_t iic_wait;
-#endif
 static int iic_pending;
 
 /* ----- global defines -----------------------------------------------	*/
@@ -271,9 +266,6 @@
 		piic->iic_own = own;
 
 	iic_ite_data.data = (void *)piic;
-#if (LINUX_VERSION_CODE >= 0x020301)
-	init_waitqueue_head(&iic_wait);
-#endif
 	if (iic_hw_resrc_init() == 0) {
 		if (i2c_iic_add_bus(&iic_ite_ops) < 0)
 			return -ENODEV;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-bit.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-bit.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-bit.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-bit.c	2003-12-30 02:50:29.000000000 -0800
@@ -27,7 +27,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <asm/uaccess.h>
 #include <linux/ioport.h>
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-ite.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-ite.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-ite.c	2001-10-11 08:05:47.000000000 -0700
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-ite.c	2003-12-30 02:50:29.000000000 -0800
@@ -38,7 +38,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <asm/uaccess.h>
 #include <linux/ioport.h>
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-algo-pcf.c linux-2.4.23-bk19/drivers/i2c/i2c-algo-pcf.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-algo-pcf.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-algo-pcf.c	2003-12-30 02:50:29.000000000 -0800
@@ -31,7 +31,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <asm/uaccess.h>
 #include <linux/ioport.h>
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-core.c linux-2.4.23-bk19/drivers/i2c/i2c-core.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-core.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-core.c	2003-12-30 02:50:29.000000000 -0800
@@ -33,13 +33,8 @@
 
 /* ----- compatibility stuff ----------------------------------------------- */
 
-#include <linux/version.h>
 #include <linux/init.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1)
-#define init_MUTEX(s) do { *(s) = MUTEX; } while(0)
-#endif
-
 #include <asm/uaccess.h>
 
 /* ----- global defines ---------------------------------------------------- */
@@ -84,10 +79,6 @@
 static int i2cproc_init(void);
 static int i2cproc_cleanup(void);
 
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,27))
-static void monitor_bus_i2c(struct inode *inode, int fill);
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,58)) */
-
 static ssize_t i2cproc_bus_read(struct file * file, char * buf,size_t count, 
                                 loff_t *ppos);
 static int read_bus_i2c(char *buf, char **start, off_t offset, int len,
@@ -99,12 +90,6 @@
 	read:		i2cproc_bus_read,
 };
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,48))
-static struct inode_operations i2cproc_inode_operations = {
-	&i2cproc_operations
-};
-#endif
-
 static int i2cproc_initialized = 0;
 
 #else /* undef CONFIG_PROC_FS */
@@ -164,16 +149,8 @@
 			goto ERROR1;
 		}
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,48))
 		proc_entry->proc_fops = &i2cproc_operations;
-#else
-		proc_entry->ops = &i2cproc_inode_operations;
-#endif
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
 		proc_entry->owner = THIS_MODULE;
-#else
-		proc_entry->fill_inode = &monitor_bus_i2c;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,58)) */
 		adap->inode = proc_entry->low_ino;
 	}
 
@@ -611,18 +588,6 @@
 
 #ifdef CONFIG_PROC_FS
 
-#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,27))
-/* Monitor access to /proc/bus/i2c*; make unloading i2c-proc impossible
-   if some process still uses it or some file in it */
-void monitor_bus_i2c(struct inode *inode, int fill)
-{
-	if (fill)
-		MOD_INC_USE_COUNT;
-	else
-		MOD_DEC_USE_COUNT;
-}
-#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,3,37)) */
-
 /* This function generates the output for /proc/bus/i2c */
 int read_bus_i2c(char *buf, char **start, off_t offset, int len, int *eof, 
                  void *private)
@@ -732,11 +697,7 @@
 		return -ENOENT;
  	}
 	proc_bus_i2c->read_proc = &read_bus_i2c;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
 	proc_bus_i2c->owner = THIS_MODULE;
-#else
-	proc_bus_i2c->fill_inode = &monitor_bus_i2c;
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27)) */
 	i2cproc_initialized += 2;
 	return 0;
 }
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-dev.c linux-2.4.23-bk19/drivers/i2c/i2c-dev.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-dev.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-dev.c	2003-12-30 02:50:29.000000000 -0800
@@ -35,10 +35,7 @@
 #include <linux/module.h>
 #include <linux/fs.h>
 #include <linux/slab.h>
-#include <linux/version.h>
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
 #include <linux/smp_lock.h>
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
 #ifdef CONFIG_DEVFS_FS
 #include <linux/devfs_fs_kernel.h>
 #endif
@@ -60,9 +57,6 @@
 
 /* struct file_operations changed too often in the 2.1 series for nice code */
 
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
-static loff_t i2cdev_lseek (struct file *file, loff_t offset, int origin);
-#endif
 static ssize_t i2cdev_read (struct file *file, char *buf, size_t count, 
                             loff_t *offset);
 static ssize_t i2cdev_write (struct file *file, const char *buf, size_t count, 
@@ -88,14 +82,8 @@
 static int i2cdev_cleanup(void);
 
 static struct file_operations i2cdev_fops = {
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
 	owner:		THIS_MODULE,
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
-	llseek:		i2cdev_lseek,
-#else
 	llseek:		no_llseek,
-#endif
 	read:		i2cdev_read,
 	write:		i2cdev_write,
 	ioctl:		i2cdev_ioctl,
@@ -133,20 +121,6 @@
 
 static int i2cdev_initialized;
 
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,9)
-/* Note that the lseek function is called llseek in 2.1 kernels. But things
-   are complicated enough as is. */
-loff_t i2cdev_lseek (struct file *file, loff_t offset, int origin)
-{
-#ifdef DEBUG
-	struct inode *inode = file->f_dentry->d_inode;
-	printk("i2c-dev.o: i2c-%d lseek to %ld bytes relative to %d.\n",
-	       MINOR(inode->i_rdev),(long) offset,origin);
-#endif /* DEBUG */
-	return -ESPIPE;
-}
-#endif
-
 static ssize_t i2cdev_read (struct file *file, char *buf, size_t count,
                             loff_t *offset)
 {
@@ -434,9 +408,6 @@
 
 	if (i2cdev_adaps[minor]->inc_use)
 		i2cdev_adaps[minor]->inc_use(i2cdev_adaps[minor]);
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0)
-	MOD_INC_USE_COUNT;
-#endif /* LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0) */
 
 #ifdef DEBUG
 	printk(KERN_DEBUG "i2c-dev.o: opened i2c-%d\n",minor);
@@ -452,16 +423,10 @@
 #ifdef DEBUG
 	printk(KERN_DEBUG "i2c-dev.o: Closed: i2c-%d\n", minor);
 #endif
-#if LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0)
-	MOD_DEC_USE_COUNT;
-#else /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
 	lock_kernel();
-#endif /* LINUX_KERNEL_VERSION < KERNEL_VERSION(2,4,0) */
 	if (i2cdev_adaps[minor]->dec_use)
 		i2cdev_adaps[minor]->dec_use(i2cdev_adaps[minor]);
-#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
 	unlock_kernel();
-#endif /* LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) */
 	return 0;
 }
 
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-elektor.c linux-2.4.23-bk19/drivers/i2c/i2c-elektor.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-elektor.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-elektor.c	2003-12-30 02:50:29.000000000 -0800
@@ -30,7 +30,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <asm/irq.h>
@@ -55,11 +54,7 @@
   in some functions, called from the algo-pcf module. Sometimes it's
   need to be rewriten - but for now just remove this for simpler reading */
 
-#if (LINUX_VERSION_CODE < 0x020301)
-static struct wait_queue *pcf_wait = NULL;
-#else
 static wait_queue_head_t pcf_wait;
-#endif
 static int pcf_pending;
 
 /* ----- global defines -----------------------------------------------	*/
@@ -281,9 +276,7 @@
 		base = DEFAULT_BASE;
 	}
 
-#if (LINUX_VERSION_CODE >= 0x020301)
 	init_waitqueue_head(&pcf_wait);
-#endif
 	if (pcf_isa_init() == 0) {
 		if (i2c_pcf_add_bus(&pcf_isa_ops) < 0)
 			return -ENODEV;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-elv.c linux-2.4.23-bk19/drivers/i2c/i2c-elv.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-elv.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-elv.c	2003-12-30 02:50:29.000000000 -0800
@@ -27,7 +27,6 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
-#include <linux/version.h>
 #include <linux/init.h>
 
 #include <asm/uaccess.h>
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-keywest.c linux-2.4.23-bk19/drivers/i2c/i2c-keywest.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-keywest.c	2002-11-28 15:53:13.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-keywest.c	2003-12-30 02:50:29.000000000 -0800
@@ -45,7 +45,6 @@
 
 #include <linux/module.h>
 #include <linux/config.h>
-#include <linux/version.h>
 #include <linux/kernel.h>
 #include <linux/ioport.h>
 #include <linux/pci.h>
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-philips-par.c linux-2.4.23-bk19/drivers/i2c/i2c-philips-par.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-philips-par.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-philips-par.c	2003-12-30 02:50:29.000000000 -0800
@@ -250,41 +250,25 @@
 }
 
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
 static struct parport_driver i2c_driver = {
 	"i2c-philips-par",
 	i2c_parport_attach,
 	i2c_parport_detach,
 	NULL
 };
-#endif
 
 int __init i2c_bitlp_init(void)
 {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,4)
-	struct parport *port;
-#endif
 	printk(KERN_INFO "i2c-philips-par.o: i2c Philips parallel port adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
 	parport_register_driver(&i2c_driver);
-#else
-	for (port = parport_enumerate(); port; port=port->next)
-		i2c_parport_attach(port);
-#endif
 	
 	return 0;
 }
 
 void __exit i2c_bitlp_exit(void)
 {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,4)
 	parport_unregister_driver(&i2c_driver);
-#else
-	struct parport *port;
-	for (port = parport_enumerate(); port; port=port->next)
-		i2c_parport_detach(port);
-#endif
 }
 
 EXPORT_NO_SYMBOLS;
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-proc.c linux-2.4.23-bk19/drivers/i2c/i2c-proc.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-proc.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-proc.c	2003-12-30 02:50:29.000000000 -0800
@@ -23,7 +23,6 @@
     This driver puts entries in /proc/sys/dev/sensors for each I2C device
 */
 
-#include <linux/version.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -63,10 +62,6 @@
 
 static struct i2c_client *i2c_clients[SENSORS_ENTRY_MAX];
 static unsigned short i2c_inodes[SENSORS_ENTRY_MAX];
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1)
-static void i2c_fill_inode(struct inode *inode, int fill);
-static void i2c_dir_fill_inode(struct inode *inode, int fill);
-#endif			/* LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1) */
 
 static ctl_table sysctl_table[] = {
 	{CTL_DEV, "dev", NULL, 0, 0555},
@@ -196,12 +191,7 @@
 #endif				/* DEBUG */
 	i2c_inodes[id - 256] =
 	    new_header->ctl_table->child->child->de->low_ino;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27))
 	new_header->ctl_table->child->child->de->owner = controlling_mod;
-#else
-	new_header->ctl_table->child->child->de->fill_inode =
-	    &i2c_dir_fill_inode;
-#endif	/* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,27)) */
 
 	return id;
 }
@@ -863,12 +853,7 @@
 	if (!
 	    (i2c_proc_header =
 	     register_sysctl_table(i2c_proc, 0))) return -ENOMEM;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,1))
 	i2c_proc_header->ctl_table->child->de->owner = THIS_MODULE;
-#else
-	i2c_proc_header->ctl_table->child->de->fill_inode =
-	    &i2c_fill_inode;
-#endif			/* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,1)) */
 	i2c_initialized++;
 	return 0;
 }
diff -urN linux-2.4.23-bk18/drivers/i2c/i2c-velleman.c linux-2.4.23-bk19/drivers/i2c/i2c-velleman.c
--- linux-2.4.23-bk18/drivers/i2c/i2c-velleman.c	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/i2c/i2c-velleman.c	2003-12-30 02:50:29.000000000 -0800
@@ -1,5 +1,5 @@
 /* ------------------------------------------------------------------------- */
-/* i2c-velleman.c i2c-hw access for Velleman K9000 adapters		     */
+/* i2c-velleman.c i2c-hw access for Velleman K8000 adapters		     */
 /* ------------------------------------------------------------------------- */
 /*   Copyright (C) 1995-96, 2000 Simon G. Vogl
 
diff -urN linux-2.4.23-bk18/drivers/net/wan/Config.in linux-2.4.23-bk19/drivers/net/wan/Config.in
--- linux-2.4.23-bk18/drivers/net/wan/Config.in	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/Config.in	2003-12-30 02:50:29.000000000 -0800
@@ -78,6 +78,7 @@
 	 comment '    X.25/LAPB support is disabled'
       fi
       if [ "$CONFIG_PCI" != "n" ]; then
+         dep_tristate '    Goramo PCI200SYN support' CONFIG_PCI200SYN $CONFIG_HDLC
          dep_tristate '    Cyclades-PC300 support (RS-232/V.35, X.21, T1/E1 boards)' CONFIG_PC300 $CONFIG_HDLC
          if [ "$CONFIG_PC300" != "n" ]; then
                if [ "$CONFIG_PPP" != "n" -a "$CONFIG_PPP_MULTLINK" != "n" -a "$CONFIG_PPP_SYNCTTY" != "n" -a "$CONFIG_HDLC_PPP" = "y" ]; then
@@ -87,14 +88,12 @@
                        comment '     Refer to the file README.mlppp, provided by PC300 package.'
                fi
          fi
+	 dep_tristate '    FarSync T-Series support' CONFIG_FARSYNC $CONFIG_HDLC
+      fi
+      if [ "$CONFIG_ISA" != "n" ]; then
+	 dep_tristate '    SDL RISCom/N2 support' CONFIG_N2 $CONFIG_HDLC
+	 dep_tristate '    Moxa C101 support' CONFIG_C101 $CONFIG_HDLC
       fi
-      dep_tristate '    SDL RISCom/N2 support' CONFIG_N2 $CONFIG_HDLC
-      dep_tristate '    Moxa C101 support' CONFIG_C101 $CONFIG_HDLC
-      dep_tristate '    FarSync T-Series support' CONFIG_FARSYNC $CONFIG_HDLC
-      bool '    Debug received/transmitted packets' CONFIG_HDLC_DEBUG_PKT
-      bool '    Debug hard_header routines' CONFIG_HDLC_DEBUG_HARD_HEADER
-      bool '    Debug FECN/BECN conditions' CONFIG_HDLC_DEBUG_ECN
-      bool '    Debug RX/TX packet rings' CONFIG_HDLC_DEBUG_RINGS
    fi
 
    tristate '  Frame relay DLCI support' CONFIG_DLCI
diff -urN linux-2.4.23-bk18/drivers/net/wan/Makefile linux-2.4.23-bk19/drivers/net/wan/Makefile
--- linux-2.4.23-bk18/drivers/net/wan/Makefile	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/Makefile	2003-12-30 02:50:29.000000000 -0800
@@ -80,6 +80,7 @@
 endif
 obj-$(CONFIG_N2)		+= n2.o
 obj-$(CONFIG_C101)		+= c101.o
+obj-$(CONFIG_PCI200SYN)		+= pci200syn.o
 
 include $(TOPDIR)/Rules.make
 
diff -urN linux-2.4.23-bk18/drivers/net/wan/c101.c linux-2.4.23-bk19/drivers/net/wan/c101.c
--- linux-2.4.23-bk18/drivers/net/wan/c101.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/c101.c	2003-12-30 02:50:29.000000000 -0800
@@ -14,7 +14,6 @@
  *    Moxa C101 User's Manual
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -33,6 +32,9 @@
 static const char* version = "Moxa C101 driver version: 1.14";
 static const char* devname = "C101";
 
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
 #define C101_PAGE 0x1D00
 #define C101_DTR 0x1E00
 #define C101_SCA 0x1F00
@@ -188,7 +190,7 @@
 	hdlc_device *hdlc = dev_to_hdlc(dev);
 	port_t *port = hdlc_to_port(hdlc);
 
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
 	if (cmd == SIOCDEVPRIVATE) {
 		sca_dump_rings(hdlc);
 		return 0;
@@ -297,9 +299,6 @@
 
 	card->tx_ring_buffers = TX_RING_BUFFERS;
 	card->rx_ring_buffers = RX_RING_BUFFERS;
-	printk(KERN_DEBUG "c101: using %u TX + %u RX packets rings\n",
-	       card->tx_ring_buffers, card->rx_ring_buffers);
-
 	card->buff_offset = C101_WINDOW_SIZE; /* Bytes 1D00-1FFF reserved */
 
 	readb(card->win0base + C101_PAGE); /* Resets SCA? */
@@ -332,6 +331,11 @@
 
 	sca_init_sync_port(card); /* Set up C101 memory */
 
+	printk(KERN_INFO "%s: Moxa C101 on IRQ%u,"
+	       " using %u TX + %u RX packets rings\n",
+	       hdlc_to_name(&card->hdlc), card->irq,
+	       card->tx_ring_buffers, card->rx_ring_buffers);
+
 	*new_card = card;
 	new_card = &card->next_card;
 	return 0;
diff -urN linux-2.4.23-bk18/drivers/net/wan/hd64572.h linux-2.4.23-bk19/drivers/net/wan/hd64572.h
--- linux-2.4.23-bk18/drivers/net/wan/hd64572.h	2003-12-30 02:50:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hd64572.h	2003-12-30 02:50:29.000000000 -0800
@@ -13,8 +13,8 @@
  *
  */
 
-#ifndef _HD64572_H
-#define _HD64572_H
+#ifndef __HD64572_H
+#define __HD64572_H
 
 /* Illegal Access Register */
 #define	ILAR	0x00
@@ -49,6 +49,9 @@
 #define IR0_M(val, chan)	((val)<<(8*(chan)))		/* Int MSCI */
 
 /* MSCI Channel Registers */
+#define MSCI0_OFFSET 0x00
+#define MSCI1_OFFSET 0x80
+
 #define MD0	0x138	/* Mode reg 0 */
 #define MD1	0x139	/* Mode reg 1 */
 #define MD2	0x13a	/* Mode reg 2 */
@@ -97,6 +100,11 @@
 #define RCR	0x156	/* Rx DMA Critical Request Reg */
 
 /* Timer Registers */
+#define TIMER0RX_OFFSET 0x00
+#define TIMER0TX_OFFSET 0x10
+#define TIMER1RX_OFFSET 0x20
+#define TIMER1TX_OFFSET 0x30
+
 #define TCNTL	0x200	/* Timer Upcounter L */
 #define TCNTH	0x201	/* Timer Upcounter H */
 #define TCONRL	0x204	/* Timer Constant Register L */
@@ -122,6 +130,11 @@
 #define DCR_TX(chan)	(0x59 + 2*chan)	/* DMA Command Reg (Tx) */
 
 /* DMA Channel Registers */
+#define DMAC0RX_OFFSET 0x00
+#define DMAC0TX_OFFSET 0x20
+#define DMAC1RX_OFFSET 0x40
+#define DMAC1TX_OFFSET 0x60
+
 #define DARL	0x80	/* Dest Addr Register L (single-block, RX only) */
 #define DARH	0x81	/* Dest Addr Register H (single-block, RX only) */
 #define DARB	0x82	/* Dest Addr Register B (single-block, RX only) */
@@ -156,7 +169,16 @@
 	unsigned char	filler[5];	/* alignment filler (16 bytes) */ 
 } pcsca_bd_t;
 
-/* 
+typedef struct {
+	u32 cp;			/* pointer to next block descriptor */
+	u32 bp;			/* buffer pointer */
+	u16 len;		/* data length */
+	u8 stat;		/* status */
+	u8 unused;		/* pads to 4-byte boundary */
+}pkt_desc;
+
+
+/*
 	Descriptor Status definitions:
 
 	Bit	Transmission	Reception
@@ -180,6 +202,23 @@
 #define DST_SHRT	0x40	/* Short Frame  */
 #define DST_EOM		0x80	/* End of Message  */
 
+/* Packet Descriptor Status bits */
+
+#define ST_TX_EOM     0x80	/* End of frame */
+#define ST_TX_UNDRRUN 0x08
+#define ST_TX_OWNRSHP 0x02
+#define ST_TX_EOT     0x01	/* End of transmition */
+
+#define ST_RX_EOM     0x80	/* End of frame */
+#define ST_RX_SHORT   0x40	/* Short frame */
+#define ST_RX_ABORT   0x20	/* Abort */
+#define ST_RX_RESBIT  0x10	/* Residual bit */
+#define ST_RX_OVERRUN 0x08	/* Overrun */
+#define ST_RX_CRC     0x04	/* CRC */
+#define ST_RX_OWNRSHP 0x02
+
+#define ST_ERROR_MASK 0x7C
+
 /* Status Counter Registers */
 #define CMCR	0x158	/* Counter Master Ctl Reg */
 #define TECNTL	0x160	/* Tx EOM Counter L */
@@ -236,11 +275,25 @@
 #define MD0_BIT_SYNC	0x80
 #define MD0_TRANSP	0xc0
 
+#define MD0_HDLC        0x80	/* Bit-sync HDLC mode */
+
+#define MD0_CRC_NONE	0x00
+#define MD0_CRC_16_0	0x04
+#define MD0_CRC_16	0x05
+#define MD0_CRC_ITU32	0x06
+#define MD0_CRC_ITU	0x07
+
 #define MD1_NOADDR	0x00
 #define MD1_SADDR1	0x40
 #define MD1_SADDR2	0x80
 #define MD1_DADDR	0xc0
 
+#define MD2_NRZI_IEEE	0x40
+#define MD2_MANCHESTER	0x80
+#define MD2_FM_MARK	0xA0
+#define MD2_FM_SPACE	0xC0
+#define MD2_LOOPBACK	0x03	/* Local data Loopback */
+
 #define MD2_F_DUPLEX	0x00
 #define MD2_AUTO_ECHO	0x01
 #define MD2_LOOP_HI_Z	0x02
@@ -264,6 +317,10 @@
 #define CTL_URSKP	0x40
 #define CTL_URCT	0x80
 
+#define CTL_NORTS	0x01
+#define CTL_NODTR	0x02
+#define CTL_IDLE	0x10
+
 #define	RXS_BR0		0x01
 #define	RXS_BR1		0x02
 #define	RXS_BR2		0x04
@@ -292,6 +349,12 @@
 #define	EXS_TES1	0x20
 #define	EXS_TES2	0x40
 
+#define CLK_BRG_MASK	0x0F
+#define CLK_PIN_OUT	0x80
+#define CLK_LINE    	0x00	/* clock line input */
+#define CLK_BRG     	0x40	/* internal baud rate generator */
+#define CLK_TX_RXCLK	0x60	/* TX clock from RX clock */
+
 #define CMD_RX_RST	0x11
 #define CMD_RX_ENA	0x12
 #define CMD_RX_DIS	0x13
@@ -314,6 +377,10 @@
 #define CMD_SRCH_MODE	0x31
 #define CMD_NOP		0x00
 
+#define CMD_RESET	0x21
+#define CMD_TX_ENABLE	0x02
+#define CMD_RX_ENABLE	0x12
+
 #define ST0_RXRDY	0x01
 #define ST0_TXRDY	0x02
 #define ST0_RXINTB	0x20
@@ -364,6 +431,8 @@
 #define IE0_RXINTB	0x20
 #define IE0_RXINTA	0x40
 #define IE0_TXINT	0x80
+#define IE0_UDRN	0x00008000 /* TX underrun MSCI interrupt enable */
+#define IE0_CDCD	0x00000400 /* CD level change interrupt enable */
 
 #define IE1_IDLD	0x01
 #define IE1_ABTD	0x02
@@ -414,14 +483,28 @@
 #define DIR_EOM		0x40
 #define DIR_EOT		0x80
 
+#define DIR_REFE	0x04
+#define DIR_UDRFE	0x04
+#define DIR_COAE	0x08
+#define DIR_COFE	0x10
+#define DIR_BOFE	0x20
+#define DIR_EOME	0x40
+#define DIR_EOTE	0x80
+
 #define DMR_CNTE	0x02
 #define DMR_NF		0x04
 #define DMR_SEOME	0x08
 #define DMR_TMOD	0x10
 
+#define DMER_DME        0x80	/* DMA Master Enable */
+
 #define DCR_SW_ABT	0x01
 #define DCR_FCT_CLR	0x02
 
+#define DCR_ABORT	0x01
+#define DCR_CLEAR_EOF	0x02
+
+#define PCR_COTE	0x80
 #define PCR_PR0		0x01
 #define PCR_PR1		0x02
 #define PCR_PR2		0x04
@@ -430,4 +513,4 @@
 #define PCR_OSB		0x40
 #define PCR_BURST	0x80
 
-#endif /* (_HD64572_H) */
+#endif /* (__HD64572_H) */
diff -urN linux-2.4.23-bk18/drivers/net/wan/hd6457x.c linux-2.4.23-bk19/drivers/net/wan/hd6457x.c
--- linux-2.4.23-bk18/drivers/net/wan/hd6457x.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hd6457x.c	2003-12-30 02:50:29.000000000 -0800
@@ -35,7 +35,6 @@
 #include <linux/interrupt.h>
 #include <linux/in.h>
 #include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
@@ -255,9 +254,6 @@
 	card_t* card = port_to_card(port);
 	u8 stat = sca_in(msci + ST1, card); /* read MSCI ST1 status */
 
-	/* printk(KERN_DEBUG "MSCI INT: ST1=%02X ILAR=%02X\n",
-	   stat, sca_in(ILAR, card)); */
-
 	/* Reset MSCI TX underrun status bit */
 	sca_out(stat & ST1_UDRN, msci + ST1, card);
 
@@ -307,7 +303,7 @@
 	openwin(card, 0);
 #endif
 	skb_put(skb, len);
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
 	printk(KERN_DEBUG "%s RX(%i):", hdlc_to_name(&port->hdlc), skb->len);
 	debug_frame(skb);
 #endif
@@ -557,7 +553,7 @@
 #endif
 
 /* We're using the following interrupts:
-   - TXINT (DMAC completed all transmisions, underflow or CTS change)
+   - TXINT (DMAC completed all transmisions, underrun or DCD change)
    - all DMA interrupts
 */
 
@@ -633,7 +629,7 @@
 
 
 
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
 static void sca_dump_rings(hdlc_device *hdlc)
 {
 	port_t *port = hdlc_to_port(hdlc);
@@ -648,30 +644,26 @@
 	openwin(card, 0);
 #endif
 
-	printk(KERN_ERR "RX ring: CDA=%u EDA=%u DSR=%02X in=%u %sactive",
+	printk(KERN_DEBUG "RX ring: CDA=%u EDA=%u DSR=%02X in=%u %sactive",
 	       sca_ina(get_dmac_rx(port) + CDAL, card),
 	       sca_ina(get_dmac_rx(port) + EDAL, card),
-	       sca_in(DSR_RX(phy_node(port)), card),
-	       port->rxin,
+	       sca_in(DSR_RX(phy_node(port)), card), port->rxin,
 	       sca_in(DSR_RX(phy_node(port)), card) & DSR_DE?"":"in");
 	for (cnt = 0; cnt < port_to_card(port)->rx_ring_buffers; cnt++)
-		printk(" %02X",
-		       readb(&(desc_address(port, cnt, 0)->stat)));
+		printk(" %02X", readb(&(desc_address(port, cnt, 0)->stat)));
 
-	printk("\n" KERN_ERR "TX ring: CDA=%u EDA=%u DSR=%02X in=%u "
+	printk("\n" KERN_DEBUG "TX ring: CDA=%u EDA=%u DSR=%02X in=%u "
 	       "last=%u %sactive",
 	       sca_ina(get_dmac_tx(port) + CDAL, card),
 	       sca_ina(get_dmac_tx(port) + EDAL, card),
-	       sca_in(DSR_TX(phy_node(port)), card), port->txin,
-	       port->txlast,
+	       sca_in(DSR_TX(phy_node(port)), card), port->txin, port->txlast,
 	       sca_in(DSR_TX(phy_node(port)), card) & DSR_DE ? "" : "in");
 
 	for (cnt = 0; cnt < port_to_card(port)->tx_ring_buffers; cnt++)
-		printk(" %02X",
-		       readb(&(desc_address(port, cnt, 1)->stat)));
+		printk(" %02X", readb(&(desc_address(port, cnt, 1)->stat)));
 	printk("\n");
 
-	printk(KERN_ERR "MSCI: MD: %02x %02x %02x, "
+	printk(KERN_DEBUG "MSCI: MD: %02x %02x %02x, "
 	       "ST: %02x %02x %02x %02x"
 #ifdef __HD64572_H
 	       " %02x"
@@ -692,14 +684,14 @@
 	       sca_in(get_msci(port) + CST1, card));
 
 #ifdef __HD64572_H
-	printk(KERN_ERR "ILAR: %02x\n", sca_in(ILAR, card));
+	printk(KERN_DEBUG "ILAR: %02x\n", sca_in(ILAR, card));
 #endif
 
 #if !defined(PAGE0_ALWAYS_MAPPED) && !defined(ALL_PAGES_ALWAYS_MAPPED)
 	openwin(card, page); /* Restore original page */
 #endif
 }
-#endif /* CONFIG_HDLC_DEBUG_RINGS */
+#endif /* DEBUG_RINGS */
 
 
 
@@ -720,7 +712,7 @@
 	desc = desc_address(port, port->txin + 1, 1);
 	if (readb(&desc->stat)) { /* allow 1 packet gap */
 		/* should never happen - previous xmit should stop queue */
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
 		printk(KERN_DEBUG "%s: transmitter buffer full\n", dev->name);
 #endif
 		netif_stop_queue(dev);
@@ -728,7 +720,7 @@
 		return 1;	/* request packet to be queued */
 	}
 
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
 	printk(KERN_DEBUG "%s TX(%i):", hdlc_to_name(hdlc), skb->len);
 	debug_frame(skb);
 #endif
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_cisco.c linux-2.4.23-bk19/drivers/net/wan/hdlc_cisco.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_cisco.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_cisco.c	2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
  * as published by the Free Software Foundation.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -24,6 +23,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/hdlc.h>
 
+#undef DEBUG_HARD_HEADER
 
 #define CISCO_MULTICAST		0x8F	/* Cisco multicast address */
 #define CISCO_UNICAST		0x0F	/* Cisco unicast address */
@@ -39,7 +39,7 @@
 			     unsigned int len)
 {
 	hdlc_header *data;
-#ifdef CONFIG_HDLC_DEBUG_HARD_HEADER
+#ifdef DEBUG_HARD_HEADER
 	printk(KERN_DEBUG "%s: cisco_hard_header called\n", dev->name);
 #endif
 
@@ -182,7 +182,7 @@
 
 		case CISCO_KEEPALIVE_REQ:
 			hdlc->state.cisco.rxseq = ntohl(cisco_data->par1);
-			if (ntohl(cisco_data->par2) == hdlc->state.cisco.txseq) {
+			if (ntohl(cisco_data->par2)==hdlc->state.cisco.txseq) {
 				hdlc->state.cisco.last_poll = jiffies;
 				if (!hdlc->state.cisco.up) {
 					u32 sec, min, hrs, days;
@@ -219,8 +219,7 @@
 {
 	hdlc_device *hdlc = (hdlc_device*)arg;
 
-	if (hdlc->state.cisco.up &&
-	    jiffies - hdlc->state.cisco.last_poll >=
+	if (hdlc->state.cisco.up && jiffies - hdlc->state.cisco.last_poll >=
 	    hdlc->state.cisco.settings.timeout * HZ) {
 		hdlc->state.cisco.up = 0;
 		printk(KERN_INFO "%s: Link down\n", hdlc_to_name(hdlc));
@@ -281,10 +280,10 @@
 		return 0;
 
 	case IF_PROTO_CISCO:
-		if(!capable(CAP_NET_ADMIN))
+		if (!capable(CAP_NET_ADMIN))
 			return -EPERM;
 
-		if(dev->flags & IFF_UP)
+		if (dev->flags & IFF_UP)
 			return -EBUSY;
 
 		if (copy_from_user(&new_settings, cisco_s, size))
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_fr.c linux-2.4.23-bk19/drivers/net/wan/hdlc_fr.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_fr.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_fr.c	2003-12-30 02:50:29.000000000 -0800
@@ -19,7 +19,6 @@
              -> 1 when "PVC up" and (exist,new) = 1,0
 */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -36,12 +35,95 @@
 #include <linux/etherdevice.h>
 #include <linux/hdlc.h>
 
+#undef DEBUG_PKT
+#undef DEBUG_ECN
 
-__inline__ pvc_device* find_pvc(hdlc_device *hdlc, u16 dlci)
+#define MAXLEN_LMISTAT  20	/* max size of status enquiry frame */
+
+#define PVC_STATE_NEW	 0x01
+#define PVC_STATE_ACTIVE 0x02
+#define PVC_STATE_FECN	 0x08 /* FECN condition */
+#define PVC_STATE_BECN	 0x10 /* BECN condition */
+
+
+#define FR_UI		 0x03
+#define FR_PAD		 0x00
+
+#define NLPID_IP	 0xCC
+#define NLPID_IPV6	 0x8E
+#define NLPID_SNAP	 0x80
+#define NLPID_PAD	 0x00
+#define NLPID_Q933	 0x08
+
+
+#define LMI_DLCI                   0 /* LMI DLCI */
+#define LMI_PROTO               0x08
+#define LMI_CALLREF             0x00 /* Call Reference */
+#define LMI_ANSI_LOCKSHIFT      0x95 /* ANSI lockshift */
+#define LMI_REPTYPE                1 /* report type */
+#define LMI_CCITT_REPTYPE       0x51
+#define LMI_ALIVE                  3 /* keep alive */
+#define LMI_CCITT_ALIVE         0x53
+#define LMI_PVCSTAT                7 /* pvc status */
+#define LMI_CCITT_PVCSTAT       0x57
+#define LMI_FULLREP                0 /* full report  */
+#define LMI_INTEGRITY              1 /* link integrity report */
+#define LMI_SINGLE                 2 /* single pvc report */
+#define LMI_STATUS_ENQUIRY      0x75
+#define LMI_STATUS              0x7D /* reply */
+
+#define LMI_REPT_LEN               1 /* report type element length */
+#define LMI_INTEG_LEN              2 /* link integrity element length */
+
+#define LMI_LENGTH                13 /* standard LMI frame length */
+#define LMI_ANSI_LENGTH           14
+
+
+typedef struct {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+	unsigned ea1:	1;
+	unsigned cr:	1;
+	unsigned dlcih:	6;
+  
+	unsigned ea2:	1;
+	unsigned de:	1;
+	unsigned becn:	1;
+	unsigned fecn:	1;
+	unsigned dlcil:	4;
+#else
+	unsigned dlcih:	6;
+	unsigned cr:	1;
+	unsigned ea1:	1;
+
+	unsigned dlcil:	4;
+	unsigned fecn:	1;
+	unsigned becn:	1;
+	unsigned de:	1;
+	unsigned ea2:	1;
+#endif
+}__attribute__ ((packed)) fr_hdr;
+
+
+static inline u16 q922_to_dlci(u8 *hdr)
+{
+	return ((hdr[0] & 0xFC) << 2) | ((hdr[1] & 0xF0) >> 4);
+}
+
+
+
+static inline void dlci_to_q922(u8 *hdr, u16 dlci)
+{
+	hdr[0] = (dlci >> 2) & 0xFC;
+	hdr[1] = ((dlci << 4) & 0xF0) | 0x01;
+}
+
+
+
+static inline pvc_device* find_pvc(hdlc_device *hdlc, u16 dlci)
 {
 	pvc_device *pvc = hdlc->state.fr.first_pvc;
 
-	while(pvc) {
+	while (pvc) {
 		if (pvc->dlci == dlci)
 			return pvc;
 		if (pvc->dlci > dlci)
@@ -53,15 +135,15 @@
 }
 
 
-__inline__ pvc_device* add_pvc(hdlc_device *hdlc, u16 dlci)
+static inline pvc_device* add_pvc(hdlc_device *hdlc, u16 dlci)
 {
 	pvc_device *pvc, **pvc_p = &hdlc->state.fr.first_pvc;
 
-	while(*pvc_p) {
+	while (*pvc_p) {
 		if ((*pvc_p)->dlci == dlci)
 			return *pvc_p;
 		if ((*pvc_p)->dlci > dlci)
-			break;	/* the listed is sorted */
+			break;	/* the list is sorted */
 		pvc_p = &(*pvc_p)->next;
 	}
 
@@ -78,17 +160,17 @@
 }
 
 
-__inline__ int pvc_is_used(pvc_device *pvc)
+static inline int pvc_is_used(pvc_device *pvc)
 {
 	return pvc->main != NULL || pvc->ether != NULL;
 }
 
 
-__inline__ void delete_unused_pvcs(hdlc_device *hdlc)
+static inline void delete_unused_pvcs(hdlc_device *hdlc)
 {
 	pvc_device **pvc_p = &hdlc->state.fr.first_pvc;
 
-	while(*pvc_p) {
+	while (*pvc_p) {
 		if (!pvc_is_used(*pvc_p)) {
 			pvc_device *pvc = *pvc_p;
 			*pvc_p = pvc->next;
@@ -100,7 +182,7 @@
 }
 
 
-__inline__ struct net_device** get_dev_p(pvc_device *pvc, int type)
+static inline struct net_device** get_dev_p(pvc_device *pvc, int type)
 {
 	if (type == ARPHRD_ETHER)
 		return &pvc->ether;
@@ -109,20 +191,19 @@
 }
 
 
-__inline__ u16 status_to_dlci(u8 *status, int *active, int *new)
+static inline u16 status_to_dlci(u8 *status, int *active, int *new)
 {
 	*new = (status[2] & 0x08) ? 1 : 0;
 	*active = (status[2] & 0x02) ? 1 : 0;
 
-	return ((status[0] & 0x3F)<<4) | ((status[1] & 0x78)>>3);
+	return ((status[0] & 0x3F) << 4) | ((status[1] & 0x78) >> 3);
 }
 
 
-__inline__ void dlci_to_status(u16 dlci, u8 *status,
-			       int active, int new)
+static inline void dlci_to_status(u16 dlci, u8 *status, int active, int new)
 {
-	status[0] = (dlci>>4) & 0x3F;
-	status[1] = ((dlci<<3) & 0x78) | 0x80;
+	status[0] = (dlci >> 4) & 0x3F;
+	status[1] = ((dlci << 3) & 0x78) | 0x80;
 	status[2] = 0x80;
 
 	if (new)
@@ -138,7 +219,7 @@
 	u16 head_len;
 	struct sk_buff *skb = *skb_p;
 
-	switch(skb->protocol) {
+	switch (skb->protocol) {
 	case __constant_ntohs(ETH_P_IP):
 		head_len = 4;
 		skb_push(skb, head_len);
@@ -260,7 +341,7 @@
 }
 
 
-__inline__ struct net_device_stats *pvc_get_stats(struct net_device *dev)
+static inline struct net_device_stats *pvc_get_stats(struct net_device *dev)
 {
 	return (struct net_device_stats *)
 		((char *)dev + sizeof(struct net_device));
@@ -632,8 +713,7 @@
 			pvc->state.exist = 1;
 			pvc->state.deleted = 0;
 			if (active != pvc->state.active ||
-			    new != pvc->state.new ||
-			    !pvc->state.exist) {
+			    new != pvc->state.new) {
 				pvc->state.new = new;
 				pvc->state.active = active;
 				fr_log_dlci_active(pvc);
@@ -699,7 +779,7 @@
 
 	pvc = find_pvc(hdlc, dlci);
 	if (!pvc) {
-#ifdef CONFIG_HDLC_DEBUG_PKT
+#ifdef DEBUG_PKT
 		printk(KERN_INFO "%s: No PVC for received frame's DLCI %d\n",
 		       hdlc_to_name(hdlc), dlci);
 #endif
@@ -708,7 +788,7 @@
 	}
 
 	if (pvc->state.fecn != fh->fecn) {
-#ifdef CONFIG_HDLC_DEBUG_ECN
+#ifdef DEBUG_ECN
 		printk(KERN_DEBUG "%s: DLCI %d FECN O%s\n", hdlc_to_name(pvc),
 		       dlci, fh->fecn ? "N" : "FF");
 #endif
@@ -716,7 +796,7 @@
 	}
 
 	if (pvc->state.becn != fh->becn) {
-#ifdef CONFIG_HDLC_DEBUG_ECN
+#ifdef DEBUG_ECN
 		printk(KERN_DEBUG "%s: DLCI %d BECN O%s\n", hdlc_to_name(pvc),
 		       dlci, fh->becn ? "N" : "FF");
 #endif
@@ -820,7 +900,7 @@
 	if (hdlc->state.fr.settings.lmi != LMI_NONE)
 		del_timer_sync(&hdlc->state.fr.timer);
 
-	while(pvc) {		/* Shutdown all PVCs for this FRAD */
+	while (pvc) {		/* Shutdown all PVCs for this FRAD */
 		if (pvc->main)
 			dev_close(pvc->main);
 		if (pvc->ether)
@@ -941,7 +1021,7 @@
 static void fr_destroy(hdlc_device *hdlc)
 {
 	pvc_device *pvc = hdlc->state.fr.first_pvc;
-	while(pvc) {
+	while (pvc) {
 		pvc_device *next = pvc->next;
 		if (pvc->main) {
 			unregister_netdevice(pvc->main);
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_generic.c linux-2.4.23-bk19/drivers/net/wan/hdlc_generic.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_generic.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_generic.c	2003-12-30 02:50:29.000000000 -0800
@@ -33,7 +33,7 @@
 #include <linux/hdlc.h>
 
 
-static const char* version = "HDLC support module revision 1.14";
+static const char* version = "HDLC support module revision 1.14b";
 
 
 static int hdlc_change_mtu(struct net_device *dev, int new_mtu)
@@ -145,7 +145,7 @@
 	hdlc->proto_detach = NULL;
 
 	result = dev_alloc_name(dev, "hdlc%d");
-	if (result<0)
+	if (result < 0)
 		return result;
 
 	result = register_netdev(dev);
@@ -177,8 +177,7 @@
 EXPORT_SYMBOL(register_hdlc_device);
 EXPORT_SYMBOL(unregister_hdlc_device);
 
-struct packet_type hdlc_packet_type=
-{
+static struct packet_type hdlc_packet_type = {
         __constant_htons(ETH_P_HDLC),
         NULL,
         hdlc_rcv,
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_ppp.c linux-2.4.23-bk19/drivers/net/wan/hdlc_ppp.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_ppp.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_ppp.c	2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
  * as published by the Free Software Foundation.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_raw.c linux-2.4.23-bk19/drivers/net/wan/hdlc_raw.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_raw.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_raw.c	2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
  * as published by the Free Software Foundation.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_raw_eth.c linux-2.4.23-bk19/drivers/net/wan/hdlc_raw_eth.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_raw_eth.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_raw_eth.c	2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
  * as published by the Free Software Foundation.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
diff -urN linux-2.4.23-bk18/drivers/net/wan/hdlc_x25.c linux-2.4.23-bk19/drivers/net/wan/hdlc_x25.c
--- linux-2.4.23-bk18/drivers/net/wan/hdlc_x25.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/hdlc_x25.c	2003-12-30 02:50:29.000000000 -0800
@@ -9,7 +9,6 @@
  * as published by the Free Software Foundation.
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
diff -urN linux-2.4.23-bk18/drivers/net/wan/n2.c linux-2.4.23-bk19/drivers/net/wan/n2.c
--- linux-2.4.23-bk18/drivers/net/wan/n2.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/n2.c	2003-12-30 02:50:29.000000000 -0800
@@ -16,7 +16,6 @@
  *    SDL Inc. PPP/HDLC/CISCO driver
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -36,6 +35,9 @@
 static const char* version = "SDL RISCom/N2 driver version: 1.14";
 static const char* devname = "RISCom/N2";
 
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
 #define USE_WINDOWSIZE 16384
 #define USE_BUS16BITS 1
 #define CLOCK_BASE 9830400	/* 9.8304 MHz */
@@ -257,7 +259,7 @@
 	hdlc_device *hdlc = dev_to_hdlc(dev);
 	port_t *port = hdlc_to_port(hdlc);
 
-#ifdef CONFIG_HDLC_DEBUG_RINGS
+#ifdef DEBUG_RINGS
 	if (cmd == SIOCDEVPRIVATE) {
 		sca_dump_rings(hdlc);
 		return 0;
@@ -415,7 +417,7 @@
 	card->buff_offset = (valid0 + valid1) * sizeof(pkt_desc) *
 		(card->tx_ring_buffers + card->rx_ring_buffers);
 
-	printk(KERN_DEBUG "n2: RISCom/N2 %u KB RAM, IRQ%u, "
+	printk(KERN_INFO "n2: RISCom/N2 %u KB RAM, IRQ%u, "
 	       "using %u TX + %u RX packets rings\n", card->ram_size / 1024,
 	       card->irq, card->tx_ring_buffers, card->rx_ring_buffers);
 
@@ -446,7 +448,7 @@
 		spin_lock_init(&port->lock);
 		dev->irq = irq;
 		dev->mem_start = winbase;
-		dev->mem_end = winbase + USE_WINDOWSIZE-1;
+		dev->mem_end = winbase + USE_WINDOWSIZE - 1;
 		dev->tx_queue_len = 50;
 		dev->do_ioctl = n2_ioctl;
 		dev->open = n2_open;
diff -urN linux-2.4.23-bk18/drivers/net/wan/pci200syn.c linux-2.4.23-bk19/drivers/net/wan/pci200syn.c
--- linux-2.4.23-bk18/drivers/net/wan/pci200syn.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.23-bk19/drivers/net/wan/pci200syn.c	2003-12-30 02:50:29.000000000 -0800
@@ -0,0 +1,476 @@
+/*
+ * Goramo PCI200SYN synchronous serial card driver for Linux
+ *
+ * Copyright (C) 2002-2003 Krzysztof Halasa <khc@pm.waw.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ *
+ * For information see http://hq.pm.waw.pl/hdlc/
+ *
+ * Sources of information:
+ *    Hitachi HD64572 SCA-II User's Manual
+ *    PLX Technology Inc. PCI9052 Data Book
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/sched.h>
+#include <linux/types.h>
+#include <linux/fcntl.h>
+#include <linux/in.h>
+#include <linux/string.h>
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/ioport.h>
+#include <linux/netdevice.h>
+#include <linux/hdlc.h>
+#include <linux/pci.h>
+#include <asm/delay.h>
+#include <asm/io.h>
+
+#include "hd64572.h"
+
+static const char* version = "Goramo PCI200SYN driver version: 1.14c";
+static const char* devname = "PCI200SYN";
+
+#undef DEBUG_PKT
+#define DEBUG_RINGS
+
+#define PCI200SYN_PLX_SIZE	0x80	/* PLX control window size (128b) */
+#define PCI200SYN_SCA_SIZE	0x400	/* SCA window size (1Kb) */
+#define ALL_PAGES_ALWAYS_MAPPED
+#define NEED_DETECT_RAM
+#define MAX_TX_BUFFERS		10
+
+static int pci_clock_freq = 33000000;
+#define CLOCK_BASE pci_clock_freq
+
+#define PCI_VENDOR_ID_GORAMO	0x10B5	/* uses PLX:9050 ID - this card	*/
+#define PCI_DEVICE_ID_PCI200SYN	0x9050	/* doesn't have its own ID	*/
+
+
+/*
+ *      PLX PCI9052 local configuration and shared runtime registers.
+ *      This structure can be used to access 9052 registers (memory mapped).
+ */
+typedef struct {
+	u32 loc_addr_range[4];	/* 00-0Ch : Local Address Ranges */
+	u32 loc_rom_range;	/* 10h : Local ROM Range */
+	u32 loc_addr_base[4];	/* 14-20h : Local Address Base Addrs */
+	u32 loc_rom_base;	/* 24h : Local ROM Base */
+	u32 loc_bus_descr[4];	/* 28-34h : Local Bus Descriptors */
+	u32 rom_bus_descr;	/* 38h : ROM Bus Descriptor */
+	u32 cs_base[4];		/* 3C-48h : Chip Select Base Addrs */
+	u32 intr_ctrl_stat;	/* 4Ch : Interrupt Control/Status */
+	u32 init_ctrl;		/* 50h : EEPROM ctrl, Init Ctrl, etc */
+}plx9052;
+
+
+
+typedef struct port_s {
+	hdlc_device hdlc;	/* HDLC device struct - must be first */
+	struct card_s *card;
+	spinlock_t lock;	/* TX lock */
+	sync_serial_settings settings;
+	int rxpart;		/* partial frame received, next frame invalid*/
+	unsigned short encoding;
+	unsigned short parity;
+	u16 rxin;		/* rx ring buffer 'in' pointer */
+	u16 txin;		/* tx ring buffer 'in' and 'last' pointers */
+	u16 txlast;
+	u8 rxs, txs, tmc;	/* SCA registers */
+	u8 phy_node;		/* physical port # - 0 or 1 */
+}port_t;
+
+
+
+typedef struct card_s {
+	u8* rambase;		/* buffer memory base (virtual) */
+	u8* scabase;		/* SCA memory base (virtual) */
+	plx9052* plxbase;	/* PLX registers memory base (virtual) */
+	u16 rx_ring_buffers;	/* number of buffers in a ring */
+	u16 tx_ring_buffers;
+	u16 buff_offset;	/* offset of first buffer of first channel */
+	u8 irq;			/* interrupt request level */
+
+	port_t ports[2];
+}card_t;
+
+
+#define sca_in(reg, card)	     readb(card->scabase + (reg))
+#define sca_out(value, reg, card)    writeb(value, card->scabase + (reg))
+#define sca_inw(reg, card)	     readw(card->scabase + (reg))
+#define sca_outw(value, reg, card)   writew(value, card->scabase + (reg))
+#define sca_inl(reg, card)	     readl(card->scabase + (reg))
+#define sca_outl(value, reg, card)   writel(value, card->scabase + (reg))
+
+#define port_to_card(port)	     (port->card)
+#define log_node(port)		     (port->phy_node)
+#define phy_node(port)		     (port->phy_node)
+#define winbase(card)		     (card->rambase)
+#define get_port(card, port)	     (&card->ports[port])
+#define sca_flush(card)		     (sca_in(IER0, card));
+
+static inline void new_memcpy_toio(char *dest, char *src, int length)
+{
+	int len;
+	do {
+		len = length > 256 ? 256 : length;
+		memcpy_toio(dest, src, len);
+		dest += len;
+		src += len;
+		length -= len;
+		readb(dest);
+	} while (len);
+}
+
+#undef memcpy_toio
+#define memcpy_toio new_memcpy_toio
+
+#include "hd6457x.c"
+
+
+static void pci200_set_iface(port_t *port)
+{
+	card_t *card = port->card;
+	u16 msci = get_msci(port);
+	u8 rxs = port->rxs & CLK_BRG_MASK;
+	u8 txs = port->txs & CLK_BRG_MASK;
+
+	sca_out(EXS_TES1, (phy_node(port) ? MSCI1_OFFSET : MSCI0_OFFSET) + EXS,
+		port_to_card(port));
+	switch(port->settings.clock_type) {
+	case CLOCK_INT:
+		rxs |= CLK_BRG; /* BRG output */
+		txs |= CLK_PIN_OUT | CLK_TX_RXCLK; /* RX clock */
+		break;
+
+	case CLOCK_TXINT:
+		rxs |= CLK_LINE; /* RXC input */
+		txs |= CLK_PIN_OUT | CLK_BRG; /* BRG output */
+		break;
+
+	case CLOCK_TXFROMRX:
+		rxs |= CLK_LINE; /* RXC input */
+		txs |= CLK_PIN_OUT | CLK_TX_RXCLK; /* RX clock */
+		break;
+
+	default:		/* EXTernal clock */
+		rxs |= CLK_LINE; /* RXC input */
+		txs |= CLK_PIN_OUT | CLK_LINE; /* TXC input */
+		break;
+	}
+
+	port->rxs = rxs;
+	port->txs = txs;
+	sca_out(rxs, msci + RXS, card);
+	sca_out(txs, msci + TXS, card);
+	sca_set_port(port);
+}
+
+
+
+static int pci200_open(struct net_device *dev)
+{
+	hdlc_device *hdlc = dev_to_hdlc(dev);
+	port_t *port = hdlc_to_port(hdlc);
+
+	int result = hdlc_open(hdlc);
+	if (result)
+		return result;
+
+	MOD_INC_USE_COUNT;
+	sca_open(hdlc);
+	pci200_set_iface(port);
+	sca_flush(port_to_card(port));
+	return 0;
+}
+
+
+
+static int pci200_close(struct net_device *dev)
+{
+	hdlc_device *hdlc = dev_to_hdlc(dev);
+	sca_close(hdlc);
+	sca_flush(port_to_card(dev_to_port(dev)));
+	hdlc_close(hdlc);
+	MOD_DEC_USE_COUNT;
+	return 0;
+}
+
+
+
+static int pci200_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+	const size_t size = sizeof(sync_serial_settings);
+	sync_serial_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.sync;
+	hdlc_device *hdlc = dev_to_hdlc(dev);
+	port_t *port = hdlc_to_port(hdlc);
+
+#ifdef DEBUG_RINGS
+	if (cmd == SIOCDEVPRIVATE) {
+		sca_dump_rings(hdlc);
+		return 0;
+	}
+#endif
+	if (cmd != SIOCWANDEV)
+		return hdlc_ioctl(dev, ifr, cmd);
+
+	switch(ifr->ifr_settings.type) {
+	case IF_GET_IFACE:
+		ifr->ifr_settings.type = IF_IFACE_V35;
+		if (ifr->ifr_settings.size < size) {
+			ifr->ifr_settings.size = size; /* data size wanted */
+			return -ENOBUFS;
+		}
+		if (copy_to_user(line, &port->settings, size))
+			return -EFAULT;
+		return 0;
+
+	case IF_IFACE_V35:
+	case IF_IFACE_SYNC_SERIAL:
+		if (!capable(CAP_NET_ADMIN))
+			return -EPERM;
+
+		if (copy_from_user(&new_line, line, size))
+			return -EFAULT;
+
+		if (new_line.clock_type != CLOCK_EXT &&
+		    new_line.clock_type != CLOCK_TXFROMRX &&
+		    new_line.clock_type != CLOCK_INT &&
+		    new_line.clock_type != CLOCK_TXINT)
+		return -EINVAL;	/* No such clock setting */
+
+		if (new_line.loopback != 0 && new_line.loopback != 1)
+			return -EINVAL;
+
+		memcpy(&port->settings, &new_line, size); /* Update settings */
+		pci200_set_iface(port);
+		sca_flush(port_to_card(port));
+		return 0;
+
+	default:
+		return hdlc_ioctl(dev, ifr, cmd);
+	}
+}
+
+
+
+static void pci200_pci_remove_one(struct pci_dev *pdev)
+{
+	int i;
+	card_t *card = pci_get_drvdata(pdev);
+
+	for(i = 0; i < 2; i++)
+		if (card->ports[i].card)
+			unregister_hdlc_device(&card->ports[i].hdlc);
+
+	if (card->irq)
+		free_irq(card->irq, card);
+
+	if (card->rambase)
+		iounmap(card->rambase);
+	if (card->scabase)
+		iounmap(card->scabase);
+	if (card->plxbase)
+		iounmap(card->plxbase);
+
+	pci_release_regions(pdev);
+	pci_disable_device(pdev);
+	pci_set_drvdata(pdev, NULL);
+	kfree(card);
+}
+
+
+
+static int __devinit pci200_pci_init_one(struct pci_dev *pdev,
+					 const struct pci_device_id *ent)
+{
+	card_t *card;
+	u8 rev_id;
+	u32 *p;
+	int i;
+	u32 ramsize;
+	u32 ramphys;		/* buffer memory base */
+	u32 scaphys;		/* SCA memory base */
+	u32 plxphys;		/* PLX registers memory base */
+
+#ifndef MODULE
+	static int printed_version;
+	if (!printed_version++)
+		printk(KERN_INFO "%s\n", version);
+#endif
+
+	i = pci_enable_device(pdev);
+	if (i)
+		return i;
+
+	i = pci_request_regions(pdev, "PCI200SYN");
+	if (i) {
+		pci_disable_device(pdev);
+		return i;
+	}
+
+	card = kmalloc(sizeof(card_t), GFP_KERNEL);
+	if (card == NULL) {
+		printk(KERN_ERR "pci200syn: unable to allocate memory\n");
+		pci_release_regions(pdev);
+		pci_disable_device(pdev);
+		return -ENOBUFS;
+	}
+	memset(card, 0, sizeof(card_t));
+	pci_set_drvdata(pdev, card);
+
+	pci_read_config_byte(pdev, PCI_REVISION_ID, &rev_id);
+	if (pci_resource_len(pdev, 0) != PCI200SYN_PLX_SIZE ||
+	    pci_resource_len(pdev, 2) != PCI200SYN_SCA_SIZE ||
+	    pci_resource_len(pdev, 3) < 16384) {
+		printk(KERN_ERR "pci200syn: invalid card EEPROM parameters\n");
+		pci200_pci_remove_one(pdev);
+		return -EFAULT;
+	}
+
+	plxphys = pci_resource_start(pdev,0) & PCI_BASE_ADDRESS_MEM_MASK;
+	card->plxbase = ioremap(plxphys, PCI200SYN_PLX_SIZE);
+
+	scaphys = pci_resource_start(pdev,2) & PCI_BASE_ADDRESS_MEM_MASK;
+	card->scabase = ioremap(scaphys, PCI200SYN_SCA_SIZE);
+
+	ramphys = pci_resource_start(pdev,3) & PCI_BASE_ADDRESS_MEM_MASK;
+	card->rambase = ioremap(ramphys, pci_resource_len(pdev,3));
+
+	if (card->plxbase == NULL ||
+	    card->scabase == NULL ||
+	    card->rambase == NULL) {
+		printk(KERN_ERR "pci200syn: ioremap() failed\n");
+		pci200_pci_remove_one(pdev);
+	}
+
+	/* Reset PLX */
+	p = &card->plxbase->init_ctrl;
+	writel(readl(p) | 0x40000000, p);
+	readl(p);		/* Flush the write - do not use sca_flush */
+	udelay(1);
+
+	writel(readl(p) & ~0x40000000, p);
+	readl(p);		/* Flush the write - do not use sca_flush */
+	udelay(1);
+
+	ramsize = sca_detect_ram(card, card->rambase,
+				 pci_resource_len(pdev, 3));
+
+	/* number of TX + RX buffers for one port - this is dual port card */
+	i = ramsize / (2 * (sizeof(pkt_desc) + HDLC_MAX_MRU));
+	card->tx_ring_buffers = min(i / 2, MAX_TX_BUFFERS);
+	card->rx_ring_buffers = i - card->tx_ring_buffers;
+
+	card->buff_offset = 2 * sizeof(pkt_desc) * (card->tx_ring_buffers +
+						    card->rx_ring_buffers);
+
+	printk(KERN_INFO "pci200syn: %u KB RAM at 0x%x, IRQ%u, using %u TX +"
+	       " %u RX packets rings\n", ramsize / 1024, ramphys,
+	       pdev->irq, card->tx_ring_buffers, card->rx_ring_buffers);
+
+	if (card->tx_ring_buffers < 1) {
+		printk(KERN_ERR "pci200syn: RAM test failed\n");
+		pci200_pci_remove_one(pdev);
+		return -EFAULT;
+	}
+
+	/* Enable interrupts on the PCI bridge */
+	p = &card->plxbase->intr_ctrl_stat;
+	writew(readw(p) | 0x0040, p);
+
+	/* Allocate IRQ */
+	if (request_irq(pdev->irq, sca_intr, SA_SHIRQ, devname, card)) {
+		printk(KERN_WARNING "pci200syn: could not allocate IRQ%d.\n",
+		       pdev->irq);
+		pci200_pci_remove_one(pdev);
+		return -EBUSY;
+	}
+	card->irq = pdev->irq;
+
+	sca_init(card, 0);
+
+	for(i = 0; i < 2; i++) {
+		port_t *port = &card->ports[i];
+		struct net_device *dev = hdlc_to_dev(&port->hdlc);
+		port->phy_node = i;
+
+		spin_lock_init(&port->lock);
+		SET_MODULE_OWNER(dev);
+		dev->irq = card->irq;
+		dev->mem_start = ramphys;
+		dev->mem_end = ramphys + ramsize - 1;
+		dev->tx_queue_len = 50;
+		dev->do_ioctl = pci200_ioctl;
+		dev->open = pci200_open;
+		dev->stop = pci200_close;
+		port->hdlc.attach = sca_attach;
+		port->hdlc.xmit = sca_xmit;
+		port->settings.clock_type = CLOCK_EXT;
+		if (register_hdlc_device(&port->hdlc)) {
+			printk(KERN_ERR "pci200syn: unable to register hdlc "
+			       "device\n");
+			pci200_pci_remove_one(pdev);
+			return -ENOBUFS;
+		}
+		port->card = card;
+		sca_init_sync_port(port);	/* Set up SCA memory */
+
+		printk(KERN_INFO "%s: PCI200SYN node %d\n",
+		       hdlc_to_name(&port->hdlc), port->phy_node);
+	}
+
+	sca_flush(card);
+	return 0;
+}
+
+
+
+static struct pci_device_id pci200_pci_tbl[] __devinitdata = {
+	{ PCI_VENDOR_ID_GORAMO, PCI_DEVICE_ID_PCI200SYN, PCI_ANY_ID,
+	  PCI_ANY_ID, 0, 0, 0 },
+	{ 0, }
+};
+
+
+static struct pci_driver pci200_pci_driver = {
+	name:	  "PCI200SYN",
+	id_table: pci200_pci_tbl,
+	probe:	  pci200_pci_init_one,
+	remove:	  pci200_pci_remove_one,
+};
+
+
+static int __init pci200_init_module(void)
+{
+#ifdef MODULE
+	printk(KERN_INFO "%s\n", version);
+#endif
+	if (pci_clock_freq < 1000000 || pci_clock_freq > 80000000) {
+		printk(KERN_ERR "pci200syn: Invalid PCI clock frequency\n");
+		return -EINVAL;
+	}
+	return pci_module_init(&pci200_pci_driver);
+}
+
+
+
+static void __exit pci200_cleanup_module(void)
+{
+	pci_unregister_driver(&pci200_pci_driver);
+}
+
+MODULE_AUTHOR("Krzysztof Halasa <khc@pm.waw.pl>");
+MODULE_DESCRIPTION("Goramo PCI200SYN serial port driver");
+MODULE_LICENSE("GPL v2");
+MODULE_DEVICE_TABLE(pci, pci200_pci_tbl);
+MODULE_PARM(pci_clock_freq, "i");
+MODULE_PARM_DESC(pci_clock_freq, "System PCI clock frequency in Hz");
+EXPORT_NO_SYMBOLS;
+module_init(pci200_init_module);
+module_exit(pci200_cleanup_module);
diff -urN linux-2.4.23-bk18/drivers/video/clgenfb.c linux-2.4.23-bk19/drivers/video/clgenfb.c
--- linux-2.4.23-bk18/drivers/video/clgenfb.c	2003-06-13 07:51:37.000000000 -0700
+++ linux-2.4.23-bk19/drivers/video/clgenfb.c	2003-12-30 02:50:30.000000000 -0800
@@ -2547,7 +2547,7 @@
 
 	pdev = clgen_pci_dev_get (btype);
 	if (!pdev) {
-		printk (KERN_ERR " Couldn't find PCI device\n");
+		printk (KERN_INFO "clgenfb: couldn't find Cirrus Logic PCI device\n");
 		DPRINTK ("EXIT, returning 1\n");
 		return 1;
 	}
diff -urN linux-2.4.23-bk18/drivers/video/hgafb.c linux-2.4.23-bk19/drivers/video/hgafb.c
--- linux-2.4.23-bk18/drivers/video/hgafb.c	2001-11-12 09:46:25.000000000 -0800
+++ linux-2.4.23-bk19/drivers/video/hgafb.c	2003-12-30 02:50:30.000000000 -0800
@@ -704,7 +704,7 @@
 int __init hgafb_init(void)
 {
 	if (! hga_card_detect()) {
-		printk(KERN_ERR "hgafb: HGA card not detected.\n");
+		printk(KERN_INFO "hgafb: HGA card not detected.\n");
 		return -EINVAL;
 	}
 
diff -urN linux-2.4.23-bk18/include/asm-ppc/pc_serial.h linux-2.4.23-bk19/include/asm-ppc/pc_serial.h
--- linux-2.4.23-bk18/include/asm-ppc/pc_serial.h	2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.23-bk19/include/asm-ppc/pc_serial.h	2003-12-30 02:50:30.000000000 -0800
@@ -26,15 +26,6 @@
 #define RS_TABLE_SIZE  4
 #endif
 
-/* Standard COM flags (except for COM4, because of the 8514 problem) */
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
-#endif
-
 #ifdef CONFIG_SERIAL_MANY_PORTS
 #define FOURPORT_FLAGS ASYNC_FOURPORT
 #define ACCENT_FLAGS 0
@@ -60,10 +51,10 @@
 
 #define STD_SERIAL_PORT_DEFNS			\
 	/* UART CLK   PORT IRQ     FLAGS        */			\
-	{ 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS },	/* ttyS0 */	\
-	{ 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS },	/* ttyS1 */	\
-	{ 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS },	/* ttyS2 */	\
-	{ 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS },	/* ttyS3 */
+	{ 0, BASE_BAUD, 0x3F8, 4, ASYNC_BOOT_AUTOCONF }, /* ttyS0 */	\
+	{ 0, BASE_BAUD, 0x2F8, 3, ASYNC_BOOT_AUTOCONF }, /* ttyS1 */	\
+	{ 0, BASE_BAUD, 0x3E8, 4, ASYNC_BOOT_AUTOCONF }, /* ttyS2 */	\
+	{ 0, BASE_BAUD, 0x2E8, 3, ASYNC_BOOT_AUTOCONF }, /* ttyS3 */
 
 
 #ifdef CONFIG_SERIAL_MANY_PORTS
diff -urN linux-2.4.23-bk18/include/asm-ppc/serial.h linux-2.4.23-bk19/include/asm-ppc/serial.h
--- linux-2.4.23-bk18/include/asm-ppc/serial.h	2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.23-bk19/include/asm-ppc/serial.h	2003-12-30 02:50:30.000000000 -0800
@@ -12,8 +12,12 @@
 #include <platforms/gemini_serial.h>
 #elif defined(CONFIG_LOPEC)
 #include <platforms/lopec_serial.h>
+#elif defined(CONFIG_SANDPOINT)
+#include <platforms/sandpoint_serial.h>
 #elif defined(CONFIG_SPRUCE)
 #include <platforms/spruce.h>
+#elif defined(CONFIG_PRPMC750)
+#include <platforms/prpmc750_serial.h>
 #elif defined(CONFIG_4xx)
 #include <asm/ibm4xx.h>
 #else
diff -urN linux-2.4.23-bk18/include/linux/hdlc.h linux-2.4.23-bk19/include/linux/hdlc.h
--- linux-2.4.23-bk18/include/linux/hdlc.h	2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.23-bk19/include/linux/hdlc.h	2003-12-30 02:50:30.000000000 -0800
@@ -42,6 +42,9 @@
 #define LMI_ANSI		2 /* ANSI Annex D */
 #define LMI_CCITT		3 /* ITU-T Annex A */
 
+#define HDLC_MAX_MTU 1500	/* Ethernet 1500 bytes */
+#define HDLC_MAX_MRU (HDLC_MAX_MTU + 10 + 14 + 4) /* for ETH+VLAN over FR */
+
 
 #ifdef __KERNEL__
 
@@ -50,78 +53,6 @@
 #include <net/syncppp.h>
 #include <linux/hdlc/ioctl.h>
 
-#define HDLC_MAX_MTU 1500	/* Ethernet 1500 bytes */
-#define HDLC_MAX_MRU (HDLC_MAX_MTU + 10 + 14 + 4) /* for ETH+VLAN over FR */
-
-#define MAXLEN_LMISTAT  20	/* max size of status enquiry frame */
-
-#define PVC_STATE_NEW       0x01
-#define PVC_STATE_ACTIVE    0x02
-#define PVC_STATE_FECN	    0x08 /* FECN condition */
-#define PVC_STATE_BECN      0x10 /* BECN condition */
-
-
-#define FR_UI              0x03
-#define FR_PAD             0x00
-
-#define NLPID_IP           0xCC
-#define NLPID_IPV6         0x8E
-#define NLPID_SNAP         0x80
-#define NLPID_PAD          0x00
-#define NLPID_Q933         0x08
-
-
-#define LMI_DLCI                   0 /* LMI DLCI */
-#define LMI_PROTO               0x08
-#define LMI_CALLREF             0x00 /* Call Reference */
-#define LMI_ANSI_LOCKSHIFT      0x95 /* ANSI lockshift */
-#define LMI_REPTYPE                1 /* report type */
-#define LMI_CCITT_REPTYPE       0x51
-#define LMI_ALIVE                  3 /* keep alive */
-#define LMI_CCITT_ALIVE         0x53
-#define LMI_PVCSTAT                7 /* pvc status */
-#define LMI_CCITT_PVCSTAT       0x57
-#define LMI_FULLREP                0 /* full report  */
-#define LMI_INTEGRITY              1 /* link integrity report */
-#define LMI_SINGLE                 2 /* single pvc report */
-#define LMI_STATUS_ENQUIRY      0x75
-#define LMI_STATUS              0x7D /* reply */
-
-#define LMI_REPT_LEN               1 /* report type element length */
-#define LMI_INTEG_LEN              2 /* link integrity element length */
-
-#define LMI_LENGTH                13 /* standard LMI frame length */
-#define LMI_ANSI_LENGTH           14
-
-
-
-typedef struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-	unsigned ea1  : 1;
-	unsigned cr   : 1;
-	unsigned dlcih: 6;
-  
-	unsigned ea2  : 1;
-	unsigned de   : 1;
-	unsigned becn : 1;
-	unsigned fecn : 1;
-	unsigned dlcil: 4;
-#elif defined (__BIG_ENDIAN_BITFIELD)
-	unsigned dlcih: 6;
-	unsigned cr   : 1;
-	unsigned ea1  : 1;
-  
-	unsigned dlcil: 4;
-	unsigned fecn : 1;
-	unsigned becn : 1;
-	unsigned de   : 1;
-	unsigned ea2  : 1;
-#else
-#error  "Please fix <asm/byteorder.h>"
-#endif
-}__attribute__ ((packed)) fr_hdr;
-
-
 
 typedef struct {		/* Used in Cisco and PPP mode */
 	u8 address;
@@ -271,26 +202,11 @@
 }
 
 
-static __inline__ u16 q922_to_dlci(u8 *hdr)
-{
-	return ((hdr[0] & 0xFC) << 2) | ((hdr[1] & 0xF0) >> 4);
-}
-
-
-
-static __inline__ void dlci_to_q922(u8 *hdr, u16 dlci)
-{
-	hdr[0] = (dlci >> 2) & 0xFC;
-	hdr[1] = ((dlci << 4) & 0xF0) | 0x01;
-}
-
-
-
 static __inline__ void debug_frame(const struct sk_buff *skb)
 {
 	int i;
 
-	for (i=0; i<skb->len; i++) {
+	for (i=0; i < skb->len; i++) {
 		if (i == 100) {
 			printk("...\n");
 			return;
diff -urN linux-2.4.23-bk18/include/linux/i2c.h linux-2.4.23-bk19/include/linux/i2c.h
--- linux-2.4.23-bk18/include/linux/i2c.h	2003-06-13 07:51:38.000000000 -0700
+++ linux-2.4.23-bk19/include/linux/i2c.h	2003-12-30 02:50:30.000000000 -0800
@@ -42,17 +42,7 @@
 
 /* --- Includes and compatibility declarations ------------------------ */
 
-#include <linux/version.h>
-#ifndef KERNEL_VERSION
-#define KERNEL_VERSION(a,b,c) (((a) << 16) | ((b) << 8) | (c))
-#endif
-
-#include <asm/page.h>			/* for 2.2.xx 			*/
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,0,25)
-#include <linux/sched.h>
-#else
 #include <asm/semaphore.h>
-#endif
 #include <linux/config.h>
 
 /* --- General options ------------------------------------------------	*/
@@ -226,10 +216,6 @@
 	u32 (*functionality) (struct i2c_adapter *);
 };
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
-struct proc_dir_entry;
-#endif
-
 /*
  * i2c_adapter is the structure used to identify a physical i2c bus along
  * with the access algorithms necessary to access it.
@@ -267,9 +253,6 @@
 #ifdef CONFIG_PROC_FS 
 	/* No need to set this when you initialize the adapter          */
 	int inode;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,29)
-	struct proc_dir_entry *proc_entry;
-#endif
 #endif /* def CONFIG_PROC_FS */
 };
 
