summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale
diff options
context:
space:
mode:
authorStefan Wahren <stefan.wahren@i2se.com>2016-06-08 20:42:46 (GMT)
committerDavid S. Miller <davem@davemloft.net>2016-06-13 01:58:10 (GMT)
commiteb37c56361df4a3e9705e808ce3f3bb483da3814 (patch)
treeaefe838337326989f2034c3fb2f3872ce6cb3641 /drivers/net/ethernet/freescale
parent38b7097b55b6cf30adc5ac07cb1055683224393e (diff)
downloadlinux-eb37c56361df4a3e9705e808ce3f3bb483da3814.tar.xz
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 'drivers/net/ethernet/freescale')
-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 fea0f33..c36401e 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 */