summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fec_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 454c3a5d43bb..9020604a3d68 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -4062,6 +4062,8 @@ static int __maybe_unused fec_suspend(struct device *dev)
if (fep->wol_flag & FEC_WOL_FLAG_ENABLE)
fep->wol_flag |= FEC_WOL_FLAG_SLEEP_ON;
phy_stop(ndev->phydev);
+ if (fep->reg_phy)
+ disable_irq(ndev->phydev->irq);
napi_disable(&fep->napi);
netif_tx_lock_bh(ndev);
netif_device_detach(ndev);
@@ -4097,6 +4099,8 @@ static int __maybe_unused fec_suspend(struct device *dev)
if (fep->clk_enet_out || fep->reg_phy)
fep->link = 0;
+ pm_runtime_force_suspend(ndev->dev.parent);
+
return 0;
}
@@ -4107,6 +4111,8 @@ static int __maybe_unused fec_resume(struct device *dev)
int ret;
int val;
+ pm_runtime_force_resume(ndev->dev.parent);
+
if (fep->reg_phy && !(fep->wol_flag & FEC_WOL_FLAG_ENABLE)) {
ret = regulator_enable(fep->reg_phy);
if (ret)
@@ -4133,6 +4139,8 @@ static int __maybe_unused fec_resume(struct device *dev)
fep->wol_flag &= ~FEC_WOL_FLAG_SLEEP_ON;
} else {
pinctrl_pm_select_default_state(&fep->pdev->dev);
+ if (fep->reg_phy)
+ enable_irq(ndev->phydev->irq);
}
fec_restart(ndev);
netif_tx_lock_bh(ndev);