diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2009-09-14 20:26:05 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2009-09-14 20:26:05 +0200 |
commit | ac8d513a6801c8636922ccf4f30211810c9a56ce (patch) | |
tree | 83ba584487a6a612c8fcf2563c28c0263df35ba2 /drivers/net/smsc911x.c | |
parent | bf992fa2bc1ad1bb2aeb0bdfadb43f236b9297fd (diff) | |
parent | 99bc47067910f7070e65ee318a6dd79a2371f1e5 (diff) | |
download | op-kernel-dev-ac8d513a6801c8636922ccf4f30211810c9a56ce.zip op-kernel-dev-ac8d513a6801c8636922ccf4f30211810c9a56ce.tar.gz |
Merge branch 'master' into for-linus
Diffstat (limited to 'drivers/net/smsc911x.c')
-rw-r--r-- | drivers/net/smsc911x.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c index 94b6d26..ccdd196 100644 --- a/drivers/net/smsc911x.c +++ b/drivers/net/smsc911x.c @@ -50,6 +50,7 @@ #include <linux/swab.h> #include <linux/phy.h> #include <linux/smsc911x.h> +#include <linux/device.h> #include "smsc911x.h" #define SMSC_CHIPNAME "smsc911x" @@ -1046,7 +1047,6 @@ static int smsc911x_poll(struct napi_struct *napi, int budget) /* Update counters */ dev->stats.rx_packets++; dev->stats.rx_bytes += (pktlength - 4); - dev->last_rx = jiffies; } /* Return total received packets */ @@ -2114,10 +2114,12 @@ out_0: /* This implementation assumes the devices remains powered on its VDDVARIO * pins during suspend. */ -static int smsc911x_suspend(struct platform_device *pdev, pm_message_t state) +/* TODO: implement freeze/thaw callbacks for hibernation.*/ + +static int smsc911x_suspend(struct device *dev) { - struct net_device *dev = platform_get_drvdata(pdev); - struct smsc911x_data *pdata = netdev_priv(dev); + struct net_device *ndev = dev_get_drvdata(dev); + struct smsc911x_data *pdata = netdev_priv(ndev); /* enable wake on LAN, energy detection and the external PME * signal. */ @@ -2128,10 +2130,10 @@ static int smsc911x_suspend(struct platform_device *pdev, pm_message_t state) return 0; } -static int smsc911x_resume(struct platform_device *pdev) +static int smsc911x_resume(struct device *dev) { - struct net_device *dev = platform_get_drvdata(pdev); - struct smsc911x_data *pdata = netdev_priv(dev); + struct net_device *ndev = dev_get_drvdata(dev); + struct smsc911x_data *pdata = netdev_priv(ndev); unsigned int to = 100; /* Note 3.11 from the datasheet: @@ -2149,19 +2151,25 @@ static int smsc911x_resume(struct platform_device *pdev) return (to == 0) ? -EIO : 0; } +static struct dev_pm_ops smsc911x_pm_ops = { + .suspend = smsc911x_suspend, + .resume = smsc911x_resume, +}; + +#define SMSC911X_PM_OPS (&smsc911x_pm_ops) + #else -#define smsc911x_suspend NULL -#define smsc911x_resume NULL +#define SMSC911X_PM_OPS NULL #endif static struct platform_driver smsc911x_driver = { .probe = smsc911x_drv_probe, .remove = __devexit_p(smsc911x_drv_remove), .driver = { - .name = SMSC_CHIPNAME, + .name = SMSC_CHIPNAME, + .owner = THIS_MODULE, + .pm = SMSC911X_PM_OPS, }, - .suspend = smsc911x_suspend, - .resume = smsc911x_resume, }; /* Entry point for loading the module */ |