diff options
Diffstat (limited to 'drivers/net/smc911x.c')
-rw-r--r-- | drivers/net/smc911x.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c index f59c7772f344..9a16a79b67d0 100644 --- a/drivers/net/smc911x.c +++ b/drivers/net/smc911x.c | |||
@@ -499,7 +499,7 @@ static void smc911x_hardware_send_pkt(struct net_device *dev) | |||
499 | #else | 499 | #else |
500 | SMC_PUSH_DATA(lp, buf, len); | 500 | SMC_PUSH_DATA(lp, buf, len); |
501 | dev->trans_start = jiffies; | 501 | dev->trans_start = jiffies; |
502 | dev_kfree_skb(skb); | 502 | dev_kfree_skb_irq(skb); |
503 | #endif | 503 | #endif |
504 | if (!lp->tx_throttle) { | 504 | if (!lp->tx_throttle) { |
505 | netif_wake_queue(dev); | 505 | netif_wake_queue(dev); |
@@ -1735,7 +1735,7 @@ static const struct ethtool_ops smc911x_ethtool_ops = { | |||
1735 | * This routine has a simple purpose -- make the SMC chip generate an | 1735 | * This routine has a simple purpose -- make the SMC chip generate an |
1736 | * interrupt, so an auto-detect routine can detect it, and find the IRQ, | 1736 | * interrupt, so an auto-detect routine can detect it, and find the IRQ, |
1737 | */ | 1737 | */ |
1738 | static int __init smc911x_findirq(struct net_device *dev) | 1738 | static int __devinit smc911x_findirq(struct net_device *dev) |
1739 | { | 1739 | { |
1740 | struct smc911x_local *lp = netdev_priv(dev); | 1740 | struct smc911x_local *lp = netdev_priv(dev); |
1741 | int timeout = 20; | 1741 | int timeout = 20; |
@@ -1799,7 +1799,7 @@ static int __init smc911x_findirq(struct net_device *dev) | |||
1799 | * o actually GRAB the irq. | 1799 | * o actually GRAB the irq. |
1800 | * o GRAB the region | 1800 | * o GRAB the region |
1801 | */ | 1801 | */ |
1802 | static int __init smc911x_probe(struct net_device *dev) | 1802 | static int __devinit smc911x_probe(struct net_device *dev) |
1803 | { | 1803 | { |
1804 | struct smc911x_local *lp = netdev_priv(dev); | 1804 | struct smc911x_local *lp = netdev_priv(dev); |
1805 | int i, retval; | 1805 | int i, retval; |
@@ -1813,7 +1813,7 @@ static int __init smc911x_probe(struct net_device *dev) | |||
1813 | val = SMC_GET_BYTE_TEST(lp); | 1813 | val = SMC_GET_BYTE_TEST(lp); |
1814 | DBG(SMC_DEBUG_MISC, "%s: endian probe returned 0x%04x\n", CARDNAME, val); | 1814 | DBG(SMC_DEBUG_MISC, "%s: endian probe returned 0x%04x\n", CARDNAME, val); |
1815 | if (val != 0x87654321) { | 1815 | if (val != 0x87654321) { |
1816 | printk(KERN_ERR "Invalid chip endian 0x08%x\n",val); | 1816 | printk(KERN_ERR "Invalid chip endian 0x%08x\n",val); |
1817 | retval = -ENODEV; | 1817 | retval = -ENODEV; |
1818 | goto err_out; | 1818 | goto err_out; |
1819 | } | 1819 | } |
@@ -2048,9 +2048,11 @@ err_out: | |||
2048 | * 0 --> there is a device | 2048 | * 0 --> there is a device |
2049 | * anything else, error | 2049 | * anything else, error |
2050 | */ | 2050 | */ |
2051 | static int smc911x_drv_probe(struct platform_device *pdev) | 2051 | static int __devinit smc911x_drv_probe(struct platform_device *pdev) |
2052 | { | 2052 | { |
2053 | #ifdef SMC_DYNAMIC_BUS_CONFIG | ||
2053 | struct smc911x_platdata *pd = pdev->dev.platform_data; | 2054 | struct smc911x_platdata *pd = pdev->dev.platform_data; |
2055 | #endif | ||
2054 | struct net_device *ndev; | 2056 | struct net_device *ndev; |
2055 | struct resource *res; | 2057 | struct resource *res; |
2056 | struct smc911x_local *lp; | 2058 | struct smc911x_local *lp; |
@@ -2122,7 +2124,7 @@ out: | |||
2122 | return ret; | 2124 | return ret; |
2123 | } | 2125 | } |
2124 | 2126 | ||
2125 | static int smc911x_drv_remove(struct platform_device *pdev) | 2127 | static int __devexit smc911x_drv_remove(struct platform_device *pdev) |
2126 | { | 2128 | { |
2127 | struct net_device *ndev = platform_get_drvdata(pdev); | 2129 | struct net_device *ndev = platform_get_drvdata(pdev); |
2128 | struct smc911x_local *lp = netdev_priv(ndev); | 2130 | struct smc911x_local *lp = netdev_priv(ndev); |
@@ -2182,9 +2184,9 @@ static int smc911x_drv_resume(struct platform_device *dev) | |||
2182 | 2184 | ||
2183 | if (netif_running(ndev)) { | 2185 | if (netif_running(ndev)) { |
2184 | smc911x_reset(ndev); | 2186 | smc911x_reset(ndev); |
2185 | smc911x_enable(ndev); | ||
2186 | if (lp->phy_type != 0) | 2187 | if (lp->phy_type != 0) |
2187 | smc911x_phy_configure(&lp->phy_configure); | 2188 | smc911x_phy_configure(&lp->phy_configure); |
2189 | smc911x_enable(ndev); | ||
2188 | netif_device_attach(ndev); | 2190 | netif_device_attach(ndev); |
2189 | } | 2191 | } |
2190 | } | 2192 | } |
@@ -2193,7 +2195,7 @@ static int smc911x_drv_resume(struct platform_device *dev) | |||
2193 | 2195 | ||
2194 | static struct platform_driver smc911x_driver = { | 2196 | static struct platform_driver smc911x_driver = { |
2195 | .probe = smc911x_drv_probe, | 2197 | .probe = smc911x_drv_probe, |
2196 | .remove = smc911x_drv_remove, | 2198 | .remove = __devexit_p(smc911x_drv_remove), |
2197 | .suspend = smc911x_drv_suspend, | 2199 | .suspend = smc911x_drv_suspend, |
2198 | .resume = smc911x_drv_resume, | 2200 | .resume = smc911x_drv_resume, |
2199 | .driver = { | 2201 | .driver = { |