net: stmmac: use readl_poll_timeout() function in init_systime()
authorDejin Zheng <zhengdejin5@gmail.com>
Mon, 16 Mar 2020 02:32:53 +0000 (10:32 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Mar 2020 09:10:09 +0000 (02:10 -0700)
The init_systime() function use an open coded of readl_poll_timeout().
Replace the open coded handling with the proper function.

Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c

index 0201596..fcf0802 100644 (file)
@@ -10,6 +10,7 @@
 *******************************************************************************/
 
 #include <linux/io.h>
+#include <linux/iopoll.h>
 #include <linux/delay.h>
 #include "common.h"
 #include "stmmac_ptp.h"
@@ -53,7 +54,6 @@ static void config_sub_second_increment(void __iomem *ioaddr,
 
 static int init_systime(void __iomem *ioaddr, u32 sec, u32 nsec)
 {
-       int limit;
        u32 value;
 
        writel(sec, ioaddr + PTP_STSUR);
@@ -64,16 +64,9 @@ static int init_systime(void __iomem *ioaddr, u32 sec, u32 nsec)
        writel(value, ioaddr + PTP_TCR);
 
        /* wait for present system time initialize to complete */
-       limit = 10;
-       while (limit--) {
-               if (!(readl(ioaddr + PTP_TCR) & PTP_TCR_TSINIT))
-                       break;
-               mdelay(10);
-       }
-       if (limit < 0)
-               return -EBUSY;
-
-       return 0;
+       return readl_poll_timeout(ioaddr + PTP_TCR, value,
+                                !(value & PTP_TCR_TSINIT),
+                                10000, 100000);
 }
 
 static int config_addend(void __iomem *ioaddr, u32 addend)