diff options
author | Denis Kirjanov | 2010-08-30 23:19:15 +0200 |
---|---|---|
committer | David S. Miller | 2010-09-01 19:57:54 +0200 |
commit | 1a9f28c8f94659a70f34f0f2ab12371c0745518d (patch) | |
tree | 8672ee908ffbbe6d4e88252da23a9a29c4b345f4 /drivers/net/ns83820.c | |
parent | net: tunnels should use rcu_dereference (diff) | |
download | kernel-qcow2-linux-1a9f28c8f94659a70f34f0f2ab12371c0745518d.tar.gz kernel-qcow2-linux-1a9f28c8f94659a70f34f0f2ab12371c0745518d.tar.xz kernel-qcow2-linux-1a9f28c8f94659a70f34f0f2ab12371c0745518d.zip |
ns83820: Use helper to disable chip interrupts
Use helper routine to disable chip interrupts.
Signed-off-by: Denis Kirjanov <dkirjanov@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ns83820.c')
-rw-r--r-- | drivers/net/ns83820.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c index 5a3488f76b38..447c2c43769a 100644 --- a/drivers/net/ns83820.c +++ b/drivers/net/ns83820.c @@ -1405,6 +1405,13 @@ static const struct ethtool_ops ops = { .get_link = ns83820_get_link }; +static inline void ns83820_disable_interrupts(struct ns83820 *dev) +{ + writel(0, dev->base + IMR); + writel(0, dev->base + IER); + readl(dev->base + IER); +} + /* this function is called in irq context from the ISR */ static void ns83820_mib_isr(struct ns83820 *dev) { @@ -1557,10 +1564,7 @@ static int ns83820_stop(struct net_device *ndev) /* FIXME: protect against interrupt handler? */ del_timer_sync(&dev->tx_watchdog); - /* disable interrupts */ - writel(0, dev->base + IMR); - writel(0, dev->base + IER); - readl(dev->base + IER); + ns83820_disable_interrupts(dev); dev->rx_info.up = 0; synchronize_irq(dev->pci_dev->irq); @@ -2023,10 +2027,7 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, dev->tx_descs, (long)dev->tx_phy_descs, dev->rx_info.descs, (long)dev->rx_info.phy_descs); - /* disable interrupts */ - writel(0, dev->base + IMR); - writel(0, dev->base + IER); - readl(dev->base + IER); + ns83820_disable_interrupts(dev); dev->IMR_cache = 0; @@ -2250,9 +2251,7 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, return 0; out_cleanup: - writel(0, dev->base + IMR); /* paranoia */ - writel(0, dev->base + IER); - readl(dev->base + IER); + ns83820_disable_interrupts(dev); /* paranoia */ out_free_irq: rtnl_unlock(); free_irq(pci_dev->irq, ndev); @@ -2277,9 +2276,7 @@ static void __devexit ns83820_remove_one(struct pci_dev *pci_dev) if (!ndev) /* paranoia */ return; - writel(0, dev->base + IMR); /* paranoia */ - writel(0, dev->base + IER); - readl(dev->base + IER); + ns83820_disable_interrupts(dev); /* paranoia */ unregister_netdev(ndev); free_irq(dev->pci_dev->irq, ndev); |