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

diff -urN linux-2.4.21-bk15/Makefile linux-2.4.21-bk16/Makefile
--- linux-2.4.21-bk15/Makefile	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/Makefile	2003-07-22 02:54:32.000000000 -0700
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 21
-EXTRAVERSION = -bk15
+EXTRAVERSION = -bk16
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.21-bk15/arch/alpha/config.in linux-2.4.21-bk16/arch/alpha/config.in
--- linux-2.4.21-bk15/arch/alpha/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/alpha/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -367,7 +367,7 @@
   bool 'Network device support' CONFIG_NETDEVICES
   if [ "$CONFIG_NETDEVICES" = "y" ]; then
     source drivers/net/Config.in
-    if [ "$CONFIG_ATM" != "n" ]; then
+    if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
       source drivers/atm/Config.in
     fi
   fi
diff -urN linux-2.4.21-bk15/arch/cris/config.in linux-2.4.21-bk16/arch/cris/config.in
--- linux-2.4.21-bk15/arch/cris/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/cris/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -210,7 +210,7 @@
   bool 'Network device support' CONFIG_NETDEVICES
   if [ "$CONFIG_NETDEVICES" = "y" ]; then
     source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
   fi
diff -urN linux-2.4.21-bk15/arch/i386/config.in linux-2.4.21-bk16/arch/i386/config.in
--- linux-2.4.21-bk15/arch/i386/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/i386/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -393,7 +393,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/ia64/config.in linux-2.4.21-bk16/arch/ia64/config.in
--- linux-2.4.21-bk15/arch/ia64/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/ia64/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -179,7 +179,7 @@
     bool 'Network device support' CONFIG_NETDEVICES
     if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
     fi
diff -urN linux-2.4.21-bk15/arch/mips/config-shared.in linux-2.4.21-bk16/arch/mips/config-shared.in
--- linux-2.4.21-bk15/arch/mips/config-shared.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/mips/config-shared.in	2003-07-22 02:54:32.000000000 -0700
@@ -686,7 +686,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" = "y" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
 	 source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/parisc/config.in linux-2.4.21-bk16/arch/parisc/config.in
--- linux-2.4.21-bk15/arch/parisc/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/parisc/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -136,7 +136,7 @@
 
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/ppc/config.in linux-2.4.21-bk16/arch/ppc/config.in
--- linux-2.4.21-bk15/arch/ppc/config.in	2003-07-22 02:54:27.000000000 -0700
+++ linux-2.4.21-bk16/arch/ppc/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -323,7 +323,7 @@
   bool 'Network device support' CONFIG_NETDEVICES
   if [ "$CONFIG_NETDEVICES" = "y" ]; then
     source drivers/net/Config.in
-    if [ "$CONFIG_ATM" != "n" ]; then
+    if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
       source drivers/atm/Config.in
     fi
   fi
diff -urN linux-2.4.21-bk15/arch/ppc64/config.in linux-2.4.21-bk16/arch/ppc64/config.in
--- linux-2.4.21-bk15/arch/ppc64/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/ppc64/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -141,7 +141,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/sh/config.in linux-2.4.21-bk16/arch/sh/config.in
--- linux-2.4.21-bk15/arch/sh/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/sh/config.in	2003-07-22 02:54:32.000000000 -0700
@@ -311,7 +311,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" = "y" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/sh64/config.in linux-2.4.21-bk16/arch/sh64/config.in
--- linux-2.4.21-bk15/arch/sh64/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/sh64/config.in	2003-07-22 02:54:33.000000000 -0700
@@ -198,7 +198,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
          source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/sparc/config.in linux-2.4.21-bk16/arch/sparc/config.in
--- linux-2.4.21-bk15/arch/sparc/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/sparc/config.in	2003-07-22 02:54:33.000000000 -0700
@@ -209,8 +209,8 @@
         dep_tristate '  PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP m
 	if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
 	  dep_tristate '  PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP
-	  if [ "$CONFIG_ATM" != "n" ]; then
-	    dep_tristate '  PPP over ATM (EXPERIMENTAL)' CONFIG_PPPOATM $CONFIG_PPP
+	  if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
+	    dep_tristate '  PPP over ATM (EXPERIMENTAL)' CONFIG_PPPOATM $CONFIG_PPP $CONFIG_ATM
 	  fi
 	fi
       fi
diff -urN linux-2.4.21-bk15/arch/sparc64/config.in linux-2.4.21-bk16/arch/sparc64/config.in
--- linux-2.4.21-bk15/arch/sparc64/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/sparc64/config.in	2003-07-22 02:54:33.000000000 -0700
@@ -234,7 +234,7 @@
    bool 'Network device support' CONFIG_NETDEVICES
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
-      if [ "$CONFIG_ATM" != "n" ]; then
+      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
 	source drivers/atm/Config.in
       fi
    fi
diff -urN linux-2.4.21-bk15/arch/x86_64/config.in linux-2.4.21-bk16/arch/x86_64/config.in
--- linux-2.4.21-bk15/arch/x86_64/config.in	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/arch/x86_64/config.in	2003-07-22 02:54:33.000000000 -0700
@@ -168,7 +168,7 @@
    if [ "$CONFIG_NETDEVICES" = "y" ]; then
       source drivers/net/Config.in
 # seems to be largely not 64bit safe	   
-#      if [ "$CONFIG_ATM" != "n" ]; then
+#      if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
 #         source drivers/atm/Config.in
 #      fi
    fi
diff -urN linux-2.4.21-bk15/drivers/char/sh-sci.c linux-2.4.21-bk16/drivers/char/sh-sci.c
--- linux-2.4.21-bk15/drivers/char/sh-sci.c	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/drivers/char/sh-sci.c	2003-07-22 02:54:33.000000000 -0700
@@ -400,7 +400,7 @@
 	if (cflag & CRTSCTS) {
 		fcr_val |= SCFCR_MCE;
 	} else {
-		ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */
+		sci_out(port, SCSPTR, 0x0080); /* Set RTS = 1 */
 	}
 	sci_out(port, SCFCR, fcr_val);
 }
@@ -1026,7 +1026,7 @@
 static int sci_open(struct tty_struct * tty, struct file * filp)
 {
 	struct sci_port *port;
-	int retval, line;
+	int retval = 0, line;
 
 	line = MINOR(tty->device) - SCI_MINOR_START;
 
@@ -1035,6 +1035,14 @@
 
 	port = &sci_ports[line];
 
+#if defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
+	if (port->base == 0) {
+		port->base = onchip_remap(SCIF_ADDR_SH5, 1024, "SCIF");
+		if (!port->base)
+			goto failed_1;
+	}
+#endif
+
 	tty->driver_data = port;
 	port->gs.tty = tty;
 	port->gs.count++;
@@ -1456,6 +1464,12 @@
 
 	sercons_port = &sci_ports[co->index];
 
+#if defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
+	sercons_port->base = onchip_remap(SCIF_ADDR_SH5, 1024, "SCIF");
+	if (!sercons_port->base)
+		return -EINVAL;
+#endif
+
 	if (options) {
 		baud = simple_strtoul(options, NULL, 10);
 		s = options;
diff -urN linux-2.4.21-bk15/drivers/char/sh-sci.h linux-2.4.21-bk16/drivers/char/sh-sci.h
--- linux-2.4.21-bk15/drivers/char/sh-sci.h	2003-07-22 02:54:28.000000000 -0700
+++ linux-2.4.21-bk16/drivers/char/sh-sci.h	2003-07-22 02:54:33.000000000 -0700
@@ -27,6 +27,7 @@
 #define SH3_IRDA_IRQS { 52,  53,  55,  54 }
 #define SH4_SCIF_IRQS { 40,  41,  43,  42 }
 #define STB1_SCIF1_IRQS {23, 24,  26,  25 }
+#define SH5_SCIF_IRQS  { 39, 40, 42 }
 #define SH7300_SCIF0_IRQS {80,  80,  80,  80 }
 
 #if defined(CONFIG_CPU_SUBTYPE_SH7708)
@@ -82,6 +83,25 @@
 # define SCIF_ORER 0x0001   /* overrun error bit */
 # define SCSCR_INIT(port)          0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
 # define SCIF_ONLY
+
+#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
+# include <asm/hardware.h>
+# define SCIF_BASE_ADDR    0x01030000 
+# define SCIF_ADDR_SH5     PHYS_PERIPHERAL_BLOCK+SCIF_BASE_ADDR
+# define SCIF_PTR2_OFFS    0x0000020
+# define SCIF_LSR2_OFFS    0x0000024
+# define SCI_NPORTS 1
+# define SCI_INIT { \
+  { {}, PORT_SCIF, 0, \
+     SH5_SCIF_IRQS, sci_init_pins_scif }  \
+}
+# define SCSPTR2           (SCIF_ADDR_SH5+SCIF_PTR2_OFFS) /* 16 bit SCIF */
+# define SCLSR2            (SCIF_ADDR_SH5+SCIF_LSR2_OFFS) /* 16 bit SCIF */
+# define SCSCR_INIT(port)  0x38                           /* TIE=0,RIE=0,
+							     TE=1,RE=1,REIE=1 */
+# define SCIF_ONLY
+
+
 #else
 # error CPU subtype not defined
 #endif
@@ -318,6 +338,7 @@
 SCIx_FNS(SCxRDR, 0x0a,  8, 0x14,  8, 0x0A,  8, 0x14,  8)
 SCIF_FNS(SCFCR,                      0x0c,  8, 0x18, 16)
 SCIF_FNS(SCFDR,                      0x0e, 16, 0x1C, 16)
+SCIF_FNS(SCSPTR,			0,  0, 0x20, 16)
 SCIF_FNS(SCLSR,                         0,  0, 0x24, 16)
 #endif
 
@@ -371,6 +392,12 @@
 		return ctrl_inw(SCSPTR2)&0x0001 ? 1 : 0; /* SCIF */
 
 }
+#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
+static inline int sci_rxd_in(struct sci_port *port)
+{
+         return sci_in(port, SCSPTR)&0x0001 ? 1 : 0; /* SCIF */
+}
+
 #endif
 
 /*
diff -urN linux-2.4.21-bk15/drivers/net/Config.in linux-2.4.21-bk16/drivers/net/Config.in
--- linux-2.4.21-bk15/drivers/net/Config.in	2003-07-22 02:54:29.000000000 -0700
+++ linux-2.4.21-bk16/drivers/net/Config.in	2003-07-22 02:54:33.000000000 -0700
@@ -311,8 +311,8 @@
    if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
       dep_tristate '  PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP
    fi
-   if [ ! "$CONFIG_ATM" = "n" ]; then
-      dep_tristate '  PPP over ATM (EXPERIMENTAL)' CONFIG_PPPOATM $CONFIG_PPP $CONFIG_EXPERIMENTAL $CONFIG_ATM
+   if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
+      dep_tristate '  PPP over ATM (EXPERIMENTAL)' CONFIG_PPPOATM $CONFIG_PPP $CONFIG_ATM
    fi
 fi
 
diff -urN linux-2.4.21-bk15/drivers/scsi/aha152x.c linux-2.4.21-bk16/drivers/scsi/aha152x.c
--- linux-2.4.21-bk15/drivers/scsi/aha152x.c	2003-06-13 07:51:36.000000000 -0700
+++ linux-2.4.21-bk16/drivers/scsi/aha152x.c	2003-07-22 02:54:34.000000000 -0700
@@ -1930,12 +1930,30 @@
 static void intr(int irqno, void *dev_id, struct pt_regs *regs)
 {
 	struct Scsi_Host *shpnt = lookup_irq(irqno);
+	unsigned char rev, dmacntrl0;
 
 	if (!shpnt) {
 		printk(KERN_ERR "aha152x: catched interrupt %d for unknown controller.\n", irqno);
 		return;
 	}
 
+	/*
+	 * Read a couple of registers that are known to not be all 1's. If
+	 * we read all 1's (-1), that means that either:
+	 * a. The host adapter chip has gone bad, and we cannot control it,
+	 * OR
+	 * b. The host adapter is a PCMCIA card that has been ejected
+	 * In either case, we cannot do anything with the host adapter at
+	 * this point in time. So just ignore the interrupt and return.
+	 * In the latter case, the interrupt might actually be meant for
+	 * someone else sharing this IRQ, and that driver will handle it
+	 */
+	rev = GETPORT(REV);
+	dmacntrl0 = GETPORT(DMACNTRL0);
+	if ((rev == 0xFF) && (dmacntrl0 == 0xFF)) {
+		return;
+	}
+
 	/* no more interrupts from the controller, while we're busy.
 	   INTEN is restored by the BH handler */
 	CLRBITS(DMACNTRL0, INTEN);
diff -urN linux-2.4.21-bk15/drivers/scsi/pcmcia/aha152x_stub.c linux-2.4.21-bk16/drivers/scsi/pcmcia/aha152x_stub.c
--- linux-2.4.21-bk15/drivers/scsi/pcmcia/aha152x_stub.c	2001-12-21 09:41:55.000000000 -0800
+++ linux-2.4.21-bk16/drivers/scsi/pcmcia/aha152x_stub.c	2003-07-22 02:54:34.000000000 -0700
@@ -40,7 +40,6 @@
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/ioport.h>
 #include <scsi/scsi.h>
 #include <linux/major.h>
@@ -139,8 +138,6 @@
     if (!info) return NULL;
     memset(info, 0, sizeof(*info));
     link = &info->link; link->priv = info;
-    link->release.function = &aha152x_release_cs;
-    link->release.data = (u_long)link;
 
     link->io.NumPorts1 = 0x20;
     link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
@@ -193,7 +190,6 @@
     if (*linkp == NULL)
 	return;
 
-    del_timer(&link->release);
     if (link->state & DEV_CONFIG) {
 	aha152x_release_cs((u_long)link);
 	if (link->state & DEV_STALE_CONFIG) {
@@ -383,7 +379,7 @@
     case CS_EVENT_CARD_REMOVAL:
 	link->state &= ~DEV_PRESENT;
 	if (link->state & DEV_CONFIG)
-	    mod_timer(&link->release, jiffies + HZ/20);
+	    aha152x_release_cs((u_long)link);
 	break;
     case CS_EVENT_CARD_INSERTION:
 	link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
diff -urN linux-2.4.21-bk15/drivers/scsi/pcmcia/fdomain_stub.c linux-2.4.21-bk16/drivers/scsi/pcmcia/fdomain_stub.c
--- linux-2.4.21-bk15/drivers/scsi/pcmcia/fdomain_stub.c	2001-12-21 09:41:55.000000000 -0800
+++ linux-2.4.21-bk16/drivers/scsi/pcmcia/fdomain_stub.c	2003-07-22 02:54:34.000000000 -0700
@@ -37,7 +37,6 @@
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/ioport.h>
 #include <scsi/scsi.h>
 #include <linux/major.h>
@@ -125,8 +124,6 @@
     if (!info) return NULL;
     memset(info, 0, sizeof(*info));
     link = &info->link; link->priv = info;
-    link->release.function = &fdomain_release;
-    link->release.data = (u_long)link;
 
     link->io.NumPorts1 = 0x10;
     link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
@@ -179,7 +176,6 @@
     if (*linkp == NULL)
 	return;
 
-    del_timer(&link->release);
     if (link->state & DEV_CONFIG) {
 	fdomain_release((u_long)link);
 	if (link->state & DEV_STALE_CONFIG) {
@@ -350,7 +346,7 @@
     case CS_EVENT_CARD_REMOVAL:
 	link->state &= ~DEV_PRESENT;
 	if (link->state & DEV_CONFIG)
-	    mod_timer(&link->release, jiffies + HZ/20);
+	    fdomain_release((u_long)link);
 	break;
     case CS_EVENT_CARD_INSERTION:
 	link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
diff -urN linux-2.4.21-bk15/drivers/scsi/pcmcia/nsp_cs.c linux-2.4.21-bk16/drivers/scsi/pcmcia/nsp_cs.c
--- linux-2.4.21-bk15/drivers/scsi/pcmcia/nsp_cs.c	2003-06-13 07:51:36.000000000 -0700
+++ linux-2.4.21-bk16/drivers/scsi/pcmcia/nsp_cs.c	2003-07-22 02:54:34.000000000 -0700
@@ -36,7 +36,6 @@
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/ioport.h>
 #include <linux/delay.h>
 #include <linux/tqueue.h>
@@ -1341,10 +1340,6 @@
 	link = &info->link;
 	link->priv = info;
 
-	/* Initialize the dev_link_t structure */
-	link->release.function	 = &nsp_cs_release;
-	link->release.data	 = (u_long)link;
-
 	/* The io structure describes IO port mapping */
 	link->io.NumPorts1	 = 0x10;
 	link->io.Attributes1	 = IO_DATA_PATH_WIDTH_AUTO;
@@ -1415,7 +1410,6 @@
 		return;
 	}
 
-	del_timer(&link->release);
 	if (link->state & DEV_CONFIG) {
 		nsp_cs_release((u_long)link);
 		if (link->state & DEV_STALE_CONFIG) {
@@ -1660,7 +1654,7 @@
 		link->state &= ~DEV_PRESENT;
 		if (link->state & DEV_CONFIG) {
 			((scsi_info_t *)link->priv)->stop = 1;
-			mod_timer(&link->release, jiffies + HZ/20);
+			nsp_cs_release((u_long)link);
 		}
 		break;
 
diff -urN linux-2.4.21-bk15/drivers/scsi/pcmcia/qlogic_stub.c linux-2.4.21-bk16/drivers/scsi/pcmcia/qlogic_stub.c
--- linux-2.4.21-bk15/drivers/scsi/pcmcia/qlogic_stub.c	2001-12-21 09:41:55.000000000 -0800
+++ linux-2.4.21-bk16/drivers/scsi/pcmcia/qlogic_stub.c	2003-07-22 02:54:34.000000000 -0700
@@ -37,7 +37,6 @@
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/ioport.h>
 #include <asm/io.h>
 #include <asm/byteorder.h>
@@ -132,8 +131,6 @@
     if (!info) return NULL;
     memset(info, 0, sizeof(*info));
     link = &info->link; link->priv = info;
-    link->release.function = &qlogic_release;
-    link->release.data = (u_long)link;
 
     link->io.NumPorts1 = 16;
     link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
@@ -186,7 +183,6 @@
     if (*linkp == NULL)
 	return;
 
-    del_timer(&link->release);
     if (link->state & DEV_CONFIG) {
 	qlogic_release((u_long)link);
 	if (link->state & DEV_STALE_CONFIG) {
@@ -371,7 +367,7 @@
     case CS_EVENT_CARD_REMOVAL:
 	link->state &= ~DEV_PRESENT;
 	if (link->state & DEV_CONFIG)
-	    mod_timer(&link->release, jiffies + HZ/20);
+	    qlogic_release((u_long)link);
 	break;
     case CS_EVENT_CARD_INSERTION:
 	link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
diff -urN linux-2.4.21-bk15/drivers/usb/Config.in linux-2.4.21-bk16/drivers/usb/Config.in
--- linux-2.4.21-bk15/drivers/usb/Config.in	2003-07-22 02:54:29.000000000 -0700
+++ linux-2.4.21-bk16/drivers/usb/Config.in	2003-07-22 02:54:34.000000000 -0700
@@ -106,6 +106,8 @@
    dep_tristate '  Texas Instruments Graph Link USB (aka SilverLink) cable support' CONFIG_USB_TIGL $CONFIG_USB
    dep_tristate '  Tieman Voyager USB Braille display support (EXPERIMENTAL)' CONFIG_USB_BRLVGER $CONFIG_USB $CONFIG_EXPERIMENTAL
    dep_tristate '  USB LCD device support' CONFIG_USB_LCD $CONFIG_USB
-   dep_tristate '  Alcatel Speedtouch USB support' CONFIG_USB_SPEEDTOUCH $CONFIG_ATM $CONFIG_USB
+   if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
+      dep_tristate '  Alcatel Speedtouch USB support' CONFIG_USB_SPEEDTOUCH $CONFIG_ATM $CONFIG_USB
+   fi
 fi
 endmenu
diff -urN linux-2.4.21-bk15/net/Config.in linux-2.4.21-bk16/net/Config.in
--- linux-2.4.21-bk15/net/Config.in	2003-07-22 02:54:30.000000000 -0700
+++ linux-2.4.21-bk16/net/Config.in	2003-07-22 02:54:35.000000000 -0700
@@ -32,7 +32,7 @@
 fi
 if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
    tristate 'Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)' CONFIG_ATM
-   if [ "$CONFIG_ATM" != "n" ]; then
+   if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
       if [ "$CONFIG_INET" = "y" ]; then
 	 dep_tristate '  Classical IP over ATM' CONFIG_ATM_CLIP $CONFIG_ATM
 	 if [ "$CONFIG_ATM_CLIP" != "n" ]; then
diff -urN linux-2.4.21-bk15/net/sched/Config.in linux-2.4.21-bk16/net/sched/Config.in
--- linux-2.4.21-bk15/net/sched/Config.in	2003-07-22 02:54:30.000000000 -0700
+++ linux-2.4.21-bk16/net/sched/Config.in	2003-07-22 02:54:35.000000000 -0700
@@ -6,7 +6,7 @@
 tristate '  CSZ packet scheduler' CONFIG_NET_SCH_CSZ
 #tristate '  H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
 #tristate '  H-FSC packet scheduler' CONFIG_NET_SCH_HFCS
-if [ "$CONFIG_ATM" != "n" ]; then
+if [ "$CONFIG_ATM" = "y" -o "$CONFIG_ATM" = "m" ]; then
    dep_tristate '  ATM pseudo-scheduler' CONFIG_NET_SCH_ATM $CONFIG_ATM
 fi
 tristate '  The simplest PRIO pseudoscheduler' CONFIG_NET_SCH_PRIO
diff -urN linux-2.4.21-bk15/net/sunrpc/svcsock.c linux-2.4.21-bk16/net/sunrpc/svcsock.c
--- linux-2.4.21-bk15/net/sunrpc/svcsock.c	2003-07-22 02:54:30.000000000 -0700
+++ linux-2.4.21-bk16/net/sunrpc/svcsock.c	2003-07-22 02:54:35.000000000 -0700
@@ -1244,7 +1244,8 @@
 		return error;
 
 	if (sin != NULL) {
-		sock->sk->reuse = 1; /* allow address reuse */
+		if (type == SOCK_STREAM)
+			sock->sk->reuse = 1; /* allow address reuse */
 		error = sock->ops->bind(sock, (struct sockaddr *) sin,
 						sizeof(*sin));
 		if (error < 0)
