drivers/net: delete 486 Apricot support

The Apricot was a 486 PC with 4MB RAM, and an on-board ethernet
via an intel i82596 hard-wired to i/o 0x300.

Those who were using linux in the 1990's will recall that the
i82596 driver was not one of the more stable or widely used
drivers of its day.  Combine that with the extremely limited
resources of the platform, and it is truly time to expire the
support for this thing.

There are some old m68k targets who were also using this chip,
so rather than poll the m68k user base, we simply cut out the
x86/Apricot support here in this commit.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
Paul Gortmaker 2013-01-08 22:00:39 -05:00
parent 63b203b43b
commit 6e07ba3e6a
4 changed files with 9 additions and 99 deletions

View File

@ -165,7 +165,7 @@ static struct devprobe2 isa_probes[] __initdata = {
#ifdef CONFIG_EWRK3 /* DEC EtherWORKS 3 */
{ewrk3_probe, 0},
#endif
#if defined(CONFIG_APRICOT) || defined(CONFIG_MVME16x_NET) || defined(CONFIG_BVME6000_NET) /* Intel I82596 */
#if defined(CONFIG_MVME16x_NET) || defined(CONFIG_BVME6000_NET) /* Intel I82596 */
{i82596_probe, 0},
#endif
#ifdef CONFIG_EL1 /* 3c501 */

View File

@ -95,9 +95,6 @@ static char version[] __initdata =
#if defined(CONFIG_BVME6000_NET) || defined(CONFIG_BVME6000_NET_MODULE)
#define ENABLE_BVME6000_NET
#endif
#if defined(CONFIG_APRICOT) || defined(CONFIG_APRICOT_MODULE)
#define ENABLE_APRICOT
#endif
#ifdef ENABLE_MVME16x_NET
#include <asm/mvme16xhw.h>
@ -120,8 +117,15 @@ static char version[] __initdata =
#define WSWAPtbd(x) ((struct i596_tbd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
#define WSWAPchar(x) ((char *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
#define ISCP_BUSY 0x00010000
#define MACH_IS_APRICOT 0
#else
#error 82596.c: unknown architecture
#endif
/*
* These were the intel versions, left here for reference. There
* are currently no x86 users of this legacy i82596 chip.
*/
#if 0
#define WSWAPrfd(x) ((struct i596_rfd *)((long)x))
#define WSWAPrbd(x) ((struct i596_rbd *)((long)x))
#define WSWAPiscp(x) ((struct i596_iscp *)((long)x))
@ -130,7 +134,6 @@ static char version[] __initdata =
#define WSWAPtbd(x) ((struct i596_tbd *)((long)x))
#define WSWAPchar(x) ((char *)((long)x))
#define ISCP_BUSY 0x0001
#define MACH_IS_APRICOT 1
#endif
/*
@ -383,11 +386,6 @@ static inline void CA(struct net_device *dev)
i = *(volatile u32 *) (dev->base_addr);
}
#endif
#ifdef ENABLE_APRICOT
if (MACH_IS_APRICOT) {
outw(0, (short) (dev->base_addr) + 4);
}
#endif
}
@ -617,9 +615,6 @@ static void rebuild_rx_bufs(struct net_device *dev)
static int init_i596_mem(struct net_device *dev)
{
struct i596_private *lp = dev->ml_priv;
#if !defined(ENABLE_MVME16x_NET) && !defined(ENABLE_BVME6000_NET) || defined(ENABLE_APRICOT)
short ioaddr = dev->base_addr;
#endif
unsigned long flags;
MPU_PORT(dev, PORT_RESET, NULL);
@ -653,18 +648,6 @@ static int init_i596_mem(struct net_device *dev)
MPU_PORT(dev, PORT_ALTSCP, (void *)virt_to_bus((void *)&lp->scp));
#elif defined(ENABLE_APRICOT)
{
u32 scp = virt_to_bus(&lp->scp);
/* change the scp address */
outw(0, ioaddr);
outw(0, ioaddr);
outb(4, ioaddr + 0xf);
outw(scp | 2, ioaddr);
outw(scp >> 16, ioaddr);
}
#endif
lp->last_cmd = jiffies;
@ -677,10 +660,6 @@ static int init_i596_mem(struct net_device *dev)
if (MACH_IS_BVME6000)
lp->scp.sysbus = 0x0000004c;
#endif
#ifdef ENABLE_APRICOT
if (MACH_IS_APRICOT)
lp->scp.sysbus = 0x00440000;
#endif
lp->scp.iscp = WSWAPiscp(virt_to_bus((void *)&lp->iscp));
lp->iscp.scb = WSWAPscb(virt_to_bus((void *)&lp->scb));
@ -698,10 +677,6 @@ static int init_i596_mem(struct net_device *dev)
DEB(DEB_INIT,printk(KERN_DEBUG "%s: starting i82596.\n", dev->name));
#if defined(ENABLE_APRICOT)
(void) inb(ioaddr + 0x10);
outb(4, ioaddr + 0xf);
#endif
CA(dev);
if (wait_istat(dev,lp,1000,"initialization timed out"))
@ -1202,43 +1177,6 @@ struct net_device * __init i82596_probe(int unit)
dev->irq = (unsigned) BVME_IRQ_I596;
goto found;
}
#endif
#ifdef ENABLE_APRICOT
{
int checksum = 0;
int ioaddr = 0x300;
/* this is easy the ethernet interface can only be at 0x300 */
/* first check nothing is already registered here */
if (!request_region(ioaddr, I596_TOTAL_SIZE, DRV_NAME)) {
printk(KERN_ERR "82596: IO address 0x%04x in use\n", ioaddr);
err = -EBUSY;
goto out;
}
dev->base_addr = ioaddr;
for (i = 0; i < 8; i++) {
eth_addr[i] = inb(ioaddr + 8 + i);
checksum += eth_addr[i];
}
/* checksum is a multiple of 0x100, got this wrong first time
some machines have 0x100, some 0x200. The DOS driver doesn't
even bother with the checksum.
Some other boards trip the checksum.. but then appear as
ether address 0. Trap these - AC */
if ((checksum % 0x100) ||
(memcmp(eth_addr, "\x00\x00\x49", 3) != 0)) {
err = -ENODEV;
goto out1;
}
dev->irq = 10;
goto found;
}
#endif
err = -ENODEV;
goto out;
@ -1296,9 +1234,6 @@ out2:
#endif
free_page ((u32)(dev->mem_start));
out1:
#ifdef ENABLE_APRICOT
release_region(dev->base_addr, I596_TOTAL_SIZE);
#endif
out:
free_netdev(dev);
return ERR_PTR(err);
@ -1454,10 +1389,6 @@ static irqreturn_t i596_interrupt(int irq, void *dev_id)
*ethirq = 1;
*ethirq = 3;
}
#endif
#ifdef ENABLE_APRICOT
(void) inb(ioaddr + 0x10);
outb(4, ioaddr + 0xf);
#endif
CA(dev);
@ -1589,11 +1520,6 @@ static void set_multicast_list(struct net_device *dev)
#ifdef MODULE
static struct net_device *dev_82596;
#ifdef ENABLE_APRICOT
module_param(irq, int, 0);
MODULE_PARM_DESC(irq, "Apricot IRQ number");
#endif
static int debug = -1;
module_param(debug, int, 0);
MODULE_PARM_DESC(debug, "i82596 debug mask");
@ -1620,10 +1546,6 @@ void __exit cleanup_module(void)
IOMAP_FULL_CACHING);
#endif
free_page ((u32)(dev_82596->mem_start));
#ifdef ENABLE_APRICOT
/* If we don't do this, we can't re-insmod it later. */
release_region(dev_82596->base_addr, I596_TOTAL_SIZE);
#endif
free_netdev(dev_82596);
}

View File

@ -50,17 +50,6 @@ config ARM_ETHER1
If you have an Acorn system with one of these (AKA25) network cards,
you should say Y to this option if you wish to use it with Linux.
config APRICOT
tristate "Apricot Xen-II on board Ethernet"
depends on ISA
---help---
If you have a network (Ethernet) controller of this type, say Y and
read the Ethernet-HOWTO, available from
<http://www.tldp.org/docs.html#howto>.
To compile this driver as a module, choose M here. The module
will be called apricot.
config BVME6000_NET
tristate "BVME6000 Ethernet support"
depends on BVME6000

View File

@ -11,7 +11,6 @@ obj-$(CONFIG_LP486E) += lp486e.o
obj-$(CONFIG_NI52) += ni52.o
obj-$(CONFIG_SUN3_82586) += sun3_82586.o
obj-$(CONFIG_ZNET) += znet.o
obj-$(CONFIG_APRICOT) += 82596.o
obj-$(CONFIG_LASI_82596) += lasi_82596.o
obj-$(CONFIG_SNI_82596) += sni_82596.o
obj-$(CONFIG_MVME16x_NET) += 82596.o