aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/smc91x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/smc91x.c')
-rw-r--r--drivers/net/smc91x.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 05c91ee6921e..ae4983a5127d 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -2031,7 +2031,7 @@ static int __devinit smc_probe(struct net_device *dev, void __iomem *ioaddr,
2031 } 2031 }
2032 2032
2033 /* Grab the IRQ */ 2033 /* Grab the IRQ */
2034 retval = request_irq(dev->irq, &smc_interrupt, irq_flags, dev->name, dev); 2034 retval = request_irq(dev->irq, smc_interrupt, irq_flags, dev->name, dev);
2035 if (retval) 2035 if (retval)
2036 goto err_out; 2036 goto err_out;
2037 2037
@@ -2283,7 +2283,7 @@ static int __devinit smc_drv_probe(struct platform_device *pdev)
2283 2283
2284 ndev->irq = ires->start; 2284 ndev->irq = ires->start;
2285 2285
2286 if (ires->flags & IRQF_TRIGGER_MASK) 2286 if (irq_flags == -1 || ires->flags & IRQF_TRIGGER_MASK)
2287 irq_flags = ires->flags & IRQF_TRIGGER_MASK; 2287 irq_flags = ires->flags & IRQF_TRIGGER_MASK;
2288 2288
2289 ret = smc_request_attrib(pdev, ndev); 2289 ret = smc_request_attrib(pdev, ndev);
@@ -2365,9 +2365,10 @@ static int __devexit smc_drv_remove(struct platform_device *pdev)
2365 return 0; 2365 return 0;
2366} 2366}
2367 2367
2368static int smc_drv_suspend(struct platform_device *dev, pm_message_t state) 2368static int smc_drv_suspend(struct device *dev)
2369{ 2369{
2370 struct net_device *ndev = platform_get_drvdata(dev); 2370 struct platform_device *pdev = to_platform_device(dev);
2371 struct net_device *ndev = platform_get_drvdata(pdev);
2371 2372
2372 if (ndev) { 2373 if (ndev) {
2373 if (netif_running(ndev)) { 2374 if (netif_running(ndev)) {
@@ -2379,9 +2380,10 @@ static int smc_drv_suspend(struct platform_device *dev, pm_message_t state)
2379 return 0; 2380 return 0;
2380} 2381}
2381 2382
2382static int smc_drv_resume(struct platform_device *dev) 2383static int smc_drv_resume(struct device *dev)
2383{ 2384{
2384 struct net_device *ndev = platform_get_drvdata(dev); 2385 struct platform_device *pdev = to_platform_device(dev);
2386 struct net_device *ndev = platform_get_drvdata(pdev);
2385 2387
2386 if (ndev) { 2388 if (ndev) {
2387 struct smc_local *lp = netdev_priv(ndev); 2389 struct smc_local *lp = netdev_priv(ndev);
@@ -2397,14 +2399,18 @@ static int smc_drv_resume(struct platform_device *dev)
2397 return 0; 2399 return 0;
2398} 2400}
2399 2401
2402static struct dev_pm_ops smc_drv_pm_ops = {
2403 .suspend = smc_drv_suspend,
2404 .resume = smc_drv_resume,
2405};
2406
2400static struct platform_driver smc_driver = { 2407static struct platform_driver smc_driver = {
2401 .probe = smc_drv_probe, 2408 .probe = smc_drv_probe,
2402 .remove = __devexit_p(smc_drv_remove), 2409 .remove = __devexit_p(smc_drv_remove),
2403 .suspend = smc_drv_suspend,
2404 .resume = smc_drv_resume,
2405 .driver = { 2410 .driver = {
2406 .name = CARDNAME, 2411 .name = CARDNAME,
2407 .owner = THIS_MODULE, 2412 .owner = THIS_MODULE,
2413 .pm = &smc_drv_pm_ops,
2408 }, 2414 },
2409}; 2415};
2410 2416