aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Wahren <stefan.wahren@i2se.com>2016-06-08 20:42:46 +0000
committerDavid S. Miller <davem@davemloft.net>2016-06-12 21:58:10 -0400
commiteb37c56361df4a3e9705e808ce3f3bb483da3814 (patch)
treeaefe838337326989f2034c3fb2f3872ce6cb3641
parentipv6: use TOS marks from sockets for routing decision (diff)
downloadlinux-dev-eb37c56361df4a3e9705e808ce3f3bb483da3814.tar.xz
linux-dev-eb37c56361df4a3e9705e808ce3f3bb483da3814.zip
net: fec: handle small PHY reset durations more precisely
Since msleep is based on jiffies the PHY reset could take longer than expected. So use msleep for values greater than 20 msec otherwise usleep_range. Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> Acked-by: Fugang Duan <fugang.duan@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index fea0f330ddbd..c36401e59905 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -3191,7 +3191,12 @@ static void fec_reset_phy(struct platform_device *pdev)
dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
return;
}
- msleep(msec);
+
+ if (msec > 20)
+ msleep(msec);
+ else
+ usleep_range(msec * 1000, msec * 1000 + 1000);
+
gpio_set_value_cansleep(phy_reset, !active_high);
}
#else /* CONFIG_OF */