OSDN Git Service

phy: phy-bcm-ns2-usbdrd: convert to readl_poll_timeout_atomic()
authorChunfeng Yun <chunfeng.yun@mediatek.com>
Tue, 25 Aug 2020 02:03:03 +0000 (10:03 +0800)
committerVinod Koul <vkoul@kernel.org>
Tue, 8 Sep 2020 04:26:10 +0000 (09:56 +0530)
Use readl_poll_timeout_atomic() to simplify code

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Link: https://lore.kernel.org/r/1598320987-25518-2-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c

index 5276259..9630ac1 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
+#include <linux/iopoll.h>
 #include <linux/irq.h>
 #include <linux/mfd/syscon.h>
 #include <linux/module.h>
@@ -87,17 +88,11 @@ static const unsigned int usb_extcon_cable[] = {
 static inline int pll_lock_stat(u32 usb_reg, int reg_mask,
                                struct ns2_phy_driver *driver)
 {
-       int retry = PLL_LOCK_RETRY;
        u32 val;
 
-       do {
-               udelay(1);
-               val = readl(driver->icfgdrd_regs + usb_reg);
-               if (val & reg_mask)
-                       return 0;
-       } while (--retry > 0);
-
-       return -EBUSY;
+       return readl_poll_timeout_atomic(driver->icfgdrd_regs + usb_reg,
+                                        val, (val & reg_mask), 1,
+                                        PLL_LOCK_RETRY);
 }
 
 static int ns2_drd_phy_init(struct phy *phy)