diff options
author | Romain Perier <romain.perier@gmail.com> | 2014-09-10 03:51:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-09-10 16:03:00 -0400 |
commit | cf98192d2e2b923241b8e6eee05a5b31f4bc16f2 (patch) | |
tree | 937a8f3500c81a9c9e4bd73c7d3166ec0e2bb057 /drivers/net/ethernet/arc/emac_rockchip.c | |
parent | 0aac383353693edcd8fc5a82a692bb7e5f60d2fd (diff) |
net: ethernet: arc: Don't free Rockchip resources before disconnect from phy
Free resources before being disconnected from phy and calling core driver is
wrong and should not happen. It avoids a delay of 4-5s caused by the timeout of
phy_disconnect().
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/arc/emac_rockchip.c')
-rw-r--r-- | drivers/net/ethernet/arc/emac_rockchip.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/arc/emac_rockchip.c b/drivers/net/ethernet/arc/emac_rockchip.c index 51d0585e2575..c31c7407b753 100644 --- a/drivers/net/ethernet/arc/emac_rockchip.c +++ b/drivers/net/ethernet/arc/emac_rockchip.c | |||
@@ -202,12 +202,13 @@ static int emac_rockchip_remove(struct platform_device *pdev) | |||
202 | struct rockchip_priv_data *priv = netdev_priv(ndev); | 202 | struct rockchip_priv_data *priv = netdev_priv(ndev); |
203 | int err; | 203 | int err; |
204 | 204 | ||
205 | err = arc_emac_remove(ndev); | ||
206 | |||
205 | clk_disable_unprepare(priv->refclk); | 207 | clk_disable_unprepare(priv->refclk); |
206 | 208 | ||
207 | if (priv->regulator) | 209 | if (priv->regulator) |
208 | regulator_disable(priv->regulator); | 210 | regulator_disable(priv->regulator); |
209 | 211 | ||
210 | err = arc_emac_remove(ndev); | ||
211 | free_netdev(ndev); | 212 | free_netdev(ndev); |
212 | return err; | 213 | return err; |
213 | } | 214 | } |