diff options
author | Fugang Duan <B38611@freescale.com> | 2013-11-06 13:36:23 +0800 |
---|---|---|
committer | Fugang Duan <B38611@freescale.com> | 2013-11-06 14:00:48 +0800 |
commit | 501454ee92342304ff49ee9458d2783665f27225 (patch) | |
tree | 051f79d81269378169e756a9e7fb8ebda3b4c5b9 /drivers/net | |
parent | f5e5ae0b43d3e14214fd62d55323ccc3558c35f5 (diff) |
ENGR00286416 net:fec: Pinctrl PM: add net device running status check
In below case:
ifconfig eth0 down
echo mem > /sys/power/state
After resume, fec pin status set to default, which is not expected
and cost unnecessary power. So, add net device running status check
before calling Pinctrl PM APIs.
Signed-off-by: Fugang Duan <B38611@freescale.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index d48fb53eaebc..78773f7314b5 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2359,13 +2359,12 @@ fec_suspend(struct device *dev) fec_stop(ndev); netif_device_detach(ndev); fec_enet_clk_enable(ndev, false); + pinctrl_pm_select_sleep_state(&fep->pdev->dev); } if (fep->reg_phy) regulator_disable(fep->reg_phy); - pinctrl_pm_select_sleep_state(&fep->pdev->dev); - return 0; } @@ -2376,8 +2375,6 @@ fec_resume(struct device *dev) struct fec_enet_private *fep = netdev_priv(ndev); int ret; - pinctrl_pm_select_default_state(&fep->pdev->dev); - if (fep->reg_phy) { ret = regulator_enable(fep->reg_phy); if (ret) @@ -2385,6 +2382,7 @@ fec_resume(struct device *dev) } if (netif_running(ndev)) { + pinctrl_pm_select_default_state(&fep->pdev->dev); fec_enet_clk_enable(ndev, true); fec_restart(ndev, fep->full_duplex); netif_device_attach(ndev); |