diff options
author | Nimrod Andy <B38611@freescale.com> | 2014-12-11 09:20:31 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-10 23:37:01 -0500 |
commit | 858eeb7d9ce2e5c8e0192d9e2a3d84b2dd72a801 (patch) | |
tree | 8429cd28bc4f679c2a2f4f322d3dde27c81a5435 /drivers/net/ethernet/freescale/fec_main.c | |
parent | 198bf1b046e370a7d3987b195cff5f1efebec3ac (diff) | |
download | blackbird-op-linux-858eeb7d9ce2e5c8e0192d9e2a3d84b2dd72a801.tar.gz blackbird-op-linux-858eeb7d9ce2e5c8e0192d9e2a3d84b2dd72a801.zip |
net: fec: reset fep link status in suspend function
On some i.MX6 serial boards, phy power and refrence clock are supplied
or controlled by SOC. When do suspend/resume test, the power and clock
are disabled, so phy device link down.
For current driver, fep->link is still up status, which cause extra operation
like below code. To avoid the dumy operation, we set fep->link to down when
phy device is real down.
...
if (fep->link) {
napi_disable(&fep->napi);
netif_tx_lock_bh(ndev);
fec_stop(ndev);
netif_tx_unlock_bh(ndev);
napi_enable(&fep->napi);
fep->link = phy_dev->link;
status_change = 1;
}
...
Signed-off-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index fee2afe47eb3..b118b7da3466 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -3332,6 +3332,12 @@ static int __maybe_unused fec_suspend(struct device *dev) if (fep->reg_phy) regulator_disable(fep->reg_phy); + /* SOC supply clock to phy, when clock is disabled, phy link down + * SOC control phy regulator, when regulator is disabled, phy link down + */ + if (fep->clk_enet_out || fep->reg_phy) + fep->link = 0; + return 0; } |