mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 10:56:06 -04:00
net: ethernet: ave: Add suspend/resume support
This patch introduces suspend and resume functions to ave driver. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
bd82233f16
commit
0ba78b4a49
@@ -1734,6 +1734,49 @@ static int ave_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int ave_suspend(struct device *dev)
|
||||
{
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct ave_private *priv = netdev_priv(ndev);
|
||||
int ret = 0;
|
||||
|
||||
if (netif_running(ndev)) {
|
||||
ret = ave_stop(ndev);
|
||||
netif_device_detach(ndev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ave_resume(struct device *dev)
|
||||
{
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct ave_private *priv = netdev_priv(ndev);
|
||||
int ret = 0;
|
||||
|
||||
ave_global_reset(ndev);
|
||||
|
||||
if (ndev->phydev) {
|
||||
ret = phy_resume(ndev->phydev);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (netif_running(ndev)) {
|
||||
ret = ave_open(ndev);
|
||||
netif_device_attach(ndev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(ave_pm_ops, ave_suspend, ave_resume);
|
||||
#define AVE_PM_OPS (&ave_pm_ops)
|
||||
#else
|
||||
#define AVE_PM_OPS NULL
|
||||
#endif
|
||||
|
||||
static int ave_pro4_get_pinmode(struct ave_private *priv,
|
||||
phy_interface_t phy_mode, u32 arg)
|
||||
{
|
||||
@@ -1908,6 +1951,7 @@ static struct platform_driver ave_driver = {
|
||||
.remove = ave_remove,
|
||||
.driver = {
|
||||
.name = "ave",
|
||||
.pm = AVE_PM_OPS,
|
||||
.of_match_table = of_ave_match,
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user