diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index c0c677c3501a..7d34e70482e1 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -4058,8 +4058,6 @@ 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); @@ -4067,6 +4065,8 @@ static int __maybe_unused fec_suspend(struct device *dev) fec_stop(ndev); if (!(fep->wol_flag & FEC_WOL_FLAG_ENABLE)) { fec_irqs_disable(ndev); + if (fep->reg_phy) + disable_irq(ndev->phydev->irq); pinctrl_pm_select_sleep_state(&fep->pdev->dev); } else { fec_enet_enter_stop_mode(fep); @@ -4135,8 +4135,10 @@ 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) + if (fep->reg_phy) { + phy_init_hw(ndev->phydev); enable_irq(ndev->phydev->irq); + } } fec_restart(ndev); netif_tx_lock_bh(ndev); |