Procházet zdrojové kódy

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>
Stefan Wahren před 9 roky
rodič
revize
eb37c56361
1 změnil soubory, kde provedl 6 přidání a 1 odebrání
  1. 6 1
      drivers/net/ethernet/freescale/fec_main.c

+ 6 - 1
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);
 		dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err);
 		return;
 		return;
 	}
 	}
-	msleep(msec);
+
+	if (msec > 20)
+		msleep(msec);
+	else
+		usleep_range(msec * 1000, msec * 1000 + 1000);
+
 	gpio_set_value_cansleep(phy_reset, !active_high);
 	gpio_set_value_cansleep(phy_reset, !active_high);
 }
 }
 #else /* CONFIG_OF */
 #else /* CONFIG_OF */