Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cb87823 authored by Daniel Mack's avatar Daniel Mack Committed by David S. Miller
Browse files

net: smsc911x: switch to new dev_pm_ops



Hibernation is unsupported for now, which meets the actual
implementation in the driver. For free/thaw, the chip's D2 state should
be entered.

Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
Acked-by: default avatar <steve.glendinning@smsc.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a48ec346
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -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"
@@ -2114,10 +2115,12 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev)
/* 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 +2131,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,9 +2152,15 @@ 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 = {
@@ -2159,9 +2168,9 @@ static struct platform_driver smsc911x_driver = {
	.remove = __devexit_p(smsc911x_drv_remove),
	.driver = {
		.name	= SMSC_CHIPNAME,
		.owner	= THIS_MODULE,
		.pm	= SMSC911X_PM_OPS,
	},
	.suspend = smsc911x_suspend,
	.resume = smsc911x_resume,
};

/* Entry point for loading the module */