diff options
author | Stefan Wahren <stefan.wahren@i2se.com> | 2016-06-08 20:42:46 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-12 21:58:10 -0400 |
commit | eb37c56361df4a3e9705e808ce3f3bb483da3814 (patch) | |
tree | aefe838337326989f2034c3fb2f3872ce6cb3641 | |
parent | 38b7097b55b6cf30adc5ac07cb1055683224393e (diff) | |
download | linux-eb37c56361df4a3e9705e808ce3f3bb483da3814.tar.bz2 |
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>
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 7 |
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 */ |