diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2008-03-19 09:44:09 +0000 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-03-26 00:18:02 -0400 |
commit | 7f8cfd560875fd643024c02ea25d4f3b8f1fd31c (patch) | |
tree | 143205269d2f04732a843e5a1de2c7a60d315ea6 /drivers | |
parent | e06ee2bb03f936c57265e447bc05e8324db61207 (diff) |
ni52: clean up initialization of priv
* initialize spinlock once
* check586() used to be done before we'd allocated ->priv; these days
it's there from the very beginning, so we don't have to play with
private copy. Consequently, we don't need to mess with reinitializing
->base, etc. afterwards.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ni52.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c index 8eac7146a88..3b1c4af615b 100644 --- a/drivers/net/ni52.c +++ b/drivers/net/ni52.c @@ -300,8 +300,7 @@ static int ni52_open(struct net_device *dev) static int check586(struct net_device *dev, unsigned size) { unsigned long where = dev->mem_start; - struct priv pb; - struct priv *p = /* (struct priv *) dev->priv*/ &pb; + struct priv *p = dev->priv; char __iomem *iscp_addrs[2]; int i; @@ -309,6 +308,7 @@ static int check586(struct net_device *dev, unsigned size) p->base = p->mapped + size - 0x01000000; p->memtop = p->mapped + size; p->scp = (struct scp_struct __iomem *)(p->base + SCP_DEFAULT_ADDRESS); + p->scb = (struct scb_struct __iomem *) p->mapped; memset_io(p->scp, 0, sizeof(struct scp_struct)); for (i = 0; i < sizeof(struct scp_struct); i++) /* memory was writeable? */ @@ -335,6 +335,9 @@ static int check586(struct net_device *dev, unsigned size) if (readb(&p->iscp->busy)) return 0; } + + p->iscp = (struct iscp_struct __iomem *) + ((char __iomem *)p->scp - sizeof(struct iscp_struct)); return 1; } @@ -348,13 +351,6 @@ static void alloc586(struct net_device *dev) ni_reset586(); mdelay(32); - spin_lock_init(&p->spinlock); - - p->scp = (struct scp_struct __iomem *) (p->base + SCP_DEFAULT_ADDRESS); - p->scb = (struct scb_struct __iomem *) isa_bus_to_virt(dev->mem_start); - p->iscp = (struct iscp_struct __iomem *) - ((char __iomem *)p->scp - sizeof(struct iscp_struct)); - memset_io(p->iscp, 0, sizeof(struct iscp_struct)); memset_io(p->scp , 0, sizeof(struct scp_struct)); @@ -445,6 +441,8 @@ static int __init ni52_probe1(struct net_device *dev, int ioaddr) dev->mem_start = memstart; dev->mem_end = memend; + spin_lock_init(&priv->spinlock); + if (!request_region(ioaddr, NI52_TOTAL_SIZE, DRV_NAME)) return -EBUSY; @@ -520,11 +518,6 @@ static int __init ni52_probe1(struct net_device *dev, int ioaddr) dev->mem_end = dev->mem_start + size; #endif - memset(priv, 0, sizeof(struct priv)); - - priv->mapped = (char __iomem *)isa_bus_to_virt(dev->mem_start); - priv->memtop = priv->mapped + size; - priv->base = priv->mapped + size - 0x01000000; alloc586(dev); /* set number of receive-buffs according to memsize */ |