The patch is against 2.4.4-ac9 (i.e. after Andrzej's updates)
Thanks
Mike Phillips
http://www.linuxtr.net
diff -urN --exclude-from=dontdiff linux-2.4.4-ac9.clean/drivers/net/tokenring/ibmtr.c linux-2.4.4-ac9/drivers/net/tokenring/ibmtr.c
--- linux-2.4.4-ac9.clean/drivers/net/tokenring/ibmtr.c	Mon May 14 11:31:35 2001
+++ linux-2.4.4-ac9/drivers/net/tokenring/ibmtr.c	Mon May 14 12:01:34 2001
@@ -271,7 +271,7 @@
 		for(i=jiffies+TR_BUSY_INTERVAL; time_before_eq(jiffies,i););
 		intf_tbl=ntohs(isa_readw(ram_addr+ACA_OFFSET+ACA_RW+WRBR_EVEN));
 		if (intf_tbl) {
-#if !TR_NEWFORMAT
+#if IBMTR_DEBUG_MESSAGES
 			printk("ibmtr::find_turbo_adapters, Turbo found at "
 				"ram_addr %x\n",ram_addr);
 			printk("ibmtr::find_turbo_adapters, interface_table ");
@@ -288,7 +288,7 @@
 			index++;
 			continue;
 		}
-#if !TR_NEWFORMAT
+#if IBMTR_DEBUG_MESSAGES 
 		printk("ibmtr::find_turbo_adapters, ibmtr card found at"
 			" %x but not a Turbo model\n",ram_addr);
 #endif
@@ -324,11 +324,6 @@
 		return -ENXIO;
 	if (base_addr > 0x1ff) { /* Check a single specified location.  */
 		if (!ibmtr_probe1(dev, base_addr)) return 0;
-#ifndef MODULE
-#ifndef PCMCIA
-		tr_freedev(dev);
-#endif
-#endif
 		return -ENODEV;
 	}
 	find_turbo_adapters(ibmtr_portlist);
@@ -337,11 +332,6 @@
 
 		if (check_region(ioaddr, IBMTR_IO_EXTENT)) continue;
 		if (!ibmtr_probe1(dev, ioaddr)) return 0;
-#ifndef MODULE
-#ifndef PCMCIA
-		tr_freedev(dev);
-#endif
-#endif
 	}
 	return -ENODEV;
 }
@@ -374,16 +364,24 @@
 	 */
 	segment = inb(PIOaddr);
 	if (segment < 0x40 || segment > 0xe0) {
-		/* Out of range values so we'll assume non-existent IO device */
+		/* Out of range values so we'll assume non-existent IO device
+		 * but this is not necessarily a problem, esp if a turbo
+		 * adapter is being used.  */
+#if IBMTR_DEBUG_MESSAGES
 		DPRINTK("ibmtr_probe1(): unhappy that inb(0x%X) == 0x%X, "
 			"Hardware Problem?\n",PIOaddr,segment);
+#endif
 		return -ENODEV;
 	}
 	/*
 	 *    Compute the linear base address of the MMIO area
 	 *    as LINUX doesn't care about segments
 	 */
-	t_mmio = (((__u32) (segment & 0xfc) << 11) + 0x80000);
+	t_mmio = (u32)ioremap(((__u32) (segment & 0xfc) << 11) + 0x80000,2048);
+	if (!t_mmio) { 
+		DPRINTK("Cannot remap mmiobase memory area") ; 
+		return -ENODEV ; 
+	} 
 	intr = segment & 0x03;	/* low bits is coded interrupt # */
 	if (ibmtr_debug_trace & TRC_INIT)
 		DPRINTK("PIOaddr: %4hx seg/intr: %2x mmio base: %08X intr: %d\n"
@@ -454,7 +452,7 @@
 				   adapter support as well /dwm   */
         for(i=0; i<IBMTR_MAX_ADAPTERS; i++) {
                 if (turbo_io[i] != PIOaddr) continue;
-#if !TR_NEWFORMAT
+#if IBMTR_DEBUG_MESSAGES 
 		printk("ibmtr::tr_probe1, setting PIOaddr %x to Turbo\n" ,
 							PIOaddr);
 #endif
@@ -902,6 +900,7 @@
 	int i;
 
 	ti = (struct tok_info *) dev->priv;
+	SET_PAGE(ti->init_srb_page); 
 	writeb(~SRB_RESP_INT, ti->mmio + ACA_OFFSET + ACA_RESET + ISRP_ODD);
 	for (i = 0; i < sizeof(struct dir_open_adapter); i++)
 		writeb(0, ti->init_srb + i);
@@ -1304,7 +1303,7 @@
 				netif_wake_queue(dev);
 				break;
 			}
-#ifdef IBMTR_DEBUG_MESSAGES
+#if IBMTR_DEBUG_MESSAGES
 
 #define LINE_ERRORS_OFST                 0
 #define INTERNAL_ERRORS_OFST             1
@@ -1478,7 +1477,7 @@
 	/* we assign the shared-ram address for ISA devices */
 	writeb(ti->sram_base, ti->mmio + ACA_OFFSET + ACA_RW + RRR_EVEN);
 #ifndef PCMCIA
-        ti->sram_virt=((__u32)ti->sram_base << 12);
+        ti->sram_virt = (u32)ioremap(((__u32)ti->sram_base << 12), ti->avail_shared_ram);
 #endif
 	ti->init_srb = ntohs(readw(ti->mmio + ACA_OFFSET + WRBR_EVEN));
 	if (ti->page_mask) {
@@ -1955,6 +1954,13 @@
 		unregister_trdev(dev_ibmtr[i]);
 		free_irq(dev_ibmtr[i]->irq, dev_ibmtr[i]);
 		release_region(dev_ibmtr[i]->base_addr, IBMTR_IO_EXTENT);
+#ifndef PCMCIA
+		{ 
+		struct tok_info *ti = (struct tok_info *)dev_ibmtr[i]->priv ; 
+		iounmap((u32 *)ti->mmio) ; 
+		iounmap((u32 *)ti->sram_virt) ; 
+		}
+#endif		
 		kfree(dev_ibmtr[i]->priv);
 		kfree(dev_ibmtr[i]);
 		dev_ibmtr[i] = NULL;
diff -urN --exclude-from=dontdiff linux-2.4.4-ac9.clean/include/linux/ibmtr.h linux-2.4.4-ac9/include/linux/ibmtr.h
--- linux-2.4.4-ac9.clean/include/linux/ibmtr.h	Mon May 14 11:31:53 2001
+++ linux-2.4.4-ac9/include/linux/ibmtr.h	Mon May 14 12:02:04 2001
@@ -152,7 +152,7 @@
 #define ACA_RW 0x00
 
 #ifdef ENABLE_PAGING
-#define SET_PAGE(x) (isa_writeb((x), ti->mmio + ACA_OFFSET+ ACA_RW + SRPR_EVEN))
+#define SET_PAGE(x) (writeb((x), ti->mmio + ACA_OFFSET+ ACA_RW + SRPR_EVEN))
 #else
 #define SET_PAGE(x)
 #endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/