diff options
author | Matthias Brugger <mbrugger@iseebcn.com> | 2012-06-21 21:10:15 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-06-22 20:06:51 -0400 |
commit | 8e27628ecf883b9e5825103e40e6f86bf8225f1a (patch) | |
tree | 84336215754a596d28430fb100052c886f508c9c /drivers | |
parent | bb1dfefdc62fa68107c4c9f1374cb856743a9434 (diff) |
smsc911x.c: encapsulate enable irq calls
We encapsulate enbale irq functionality in a function call.
As on probe the interrupts will be disabled twice, we delete
one.
Signed-off-by: Matthias Brugger <mbrugger@iseebcn.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/smsc/smsc911x.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c index 1466e5d2af44..54ca99dbb406 100644 --- a/drivers/net/ethernet/smsc/smsc911x.c +++ b/drivers/net/ethernet/smsc/smsc911x.c | |||
@@ -1442,6 +1442,14 @@ smsc911x_set_hw_mac_address(struct smsc911x_data *pdata, u8 dev_addr[6]) | |||
1442 | smsc911x_mac_write(pdata, ADDRL, mac_low32); | 1442 | smsc911x_mac_write(pdata, ADDRL, mac_low32); |
1443 | } | 1443 | } |
1444 | 1444 | ||
1445 | static void smsc911x_disable_irq_chip(struct net_device *dev) | ||
1446 | { | ||
1447 | struct smsc911x_data *pdata = netdev_priv(dev); | ||
1448 | |||
1449 | smsc911x_reg_write(pdata, INT_EN, 0); | ||
1450 | smsc911x_reg_write(pdata, INT_STS, 0xFFFFFFFF); | ||
1451 | } | ||
1452 | |||
1445 | static int smsc911x_open(struct net_device *dev) | 1453 | static int smsc911x_open(struct net_device *dev) |
1446 | { | 1454 | { |
1447 | struct smsc911x_data *pdata = netdev_priv(dev); | 1455 | struct smsc911x_data *pdata = netdev_priv(dev); |
@@ -1494,8 +1502,7 @@ static int smsc911x_open(struct net_device *dev) | |||
1494 | spin_unlock_irq(&pdata->mac_lock); | 1502 | spin_unlock_irq(&pdata->mac_lock); |
1495 | 1503 | ||
1496 | /* Initialise irqs, but leave all sources disabled */ | 1504 | /* Initialise irqs, but leave all sources disabled */ |
1497 | smsc911x_reg_write(pdata, INT_EN, 0); | 1505 | smsc911x_disable_irq_chip(dev); |
1498 | smsc911x_reg_write(pdata, INT_STS, 0xFFFFFFFF); | ||
1499 | 1506 | ||
1500 | /* Set interrupt deassertion to 100uS */ | 1507 | /* Set interrupt deassertion to 100uS */ |
1501 | intcfg = ((10 << 24) | INT_CFG_IRQ_EN_); | 1508 | intcfg = ((10 << 24) | INT_CFG_IRQ_EN_); |
@@ -2215,9 +2222,6 @@ static int __devinit smsc911x_init(struct net_device *dev) | |||
2215 | if (smsc911x_soft_reset(pdata)) | 2222 | if (smsc911x_soft_reset(pdata)) |
2216 | return -ENODEV; | 2223 | return -ENODEV; |
2217 | 2224 | ||
2218 | /* Disable all interrupt sources until we bring the device up */ | ||
2219 | smsc911x_reg_write(pdata, INT_EN, 0); | ||
2220 | |||
2221 | ether_setup(dev); | 2225 | ether_setup(dev); |
2222 | dev->flags |= IFF_MULTICAST; | 2226 | dev->flags |= IFF_MULTICAST; |
2223 | netif_napi_add(dev, &pdata->napi, smsc911x_poll, SMSC_NAPI_WEIGHT); | 2227 | netif_napi_add(dev, &pdata->napi, smsc911x_poll, SMSC_NAPI_WEIGHT); |
@@ -2434,8 +2438,7 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) | |||
2434 | smsc911x_reg_write(pdata, INT_CFG, intcfg); | 2438 | smsc911x_reg_write(pdata, INT_CFG, intcfg); |
2435 | 2439 | ||
2436 | /* Ensure interrupts are globally disabled before connecting ISR */ | 2440 | /* Ensure interrupts are globally disabled before connecting ISR */ |
2437 | smsc911x_reg_write(pdata, INT_EN, 0); | 2441 | smsc911x_disable_irq_chip(dev); |
2438 | smsc911x_reg_write(pdata, INT_STS, 0xFFFFFFFF); | ||
2439 | 2442 | ||
2440 | retval = request_irq(dev->irq, smsc911x_irqhandler, | 2443 | retval = request_irq(dev->irq, smsc911x_irqhandler, |
2441 | irq_flags | IRQF_SHARED, dev->name, dev); | 2444 | irq_flags | IRQF_SHARED, dev->name, dev); |