Re: [PATCH 1/6] phy: phy-bcm-ns-usb3: convert to readl_poll_timeout_atomic()

2020-09-07 Thread Vinod Koul
On 25-08-20, 10:03, Chunfeng Yun wrote:
> Use readl_poll_timeout_atomic() to simplify code

Applied all, thanks

-- 
~Vinod


[PATCH 1/6] phy: phy-bcm-ns-usb3: convert to readl_poll_timeout_atomic()

2020-08-24 Thread Chunfeng Yun
Use readl_poll_timeout_atomic() to simplify code

Signed-off-by: Chunfeng Yun 
---
 drivers/phy/broadcom/phy-bcm-ns-usb3.c | 22 +-
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/drivers/phy/broadcom/phy-bcm-ns-usb3.c 
b/drivers/phy/broadcom/phy-bcm-ns-usb3.c
index 14f45bc..47b029f 100644
--- a/drivers/phy/broadcom/phy-bcm-ns-usb3.c
+++ b/drivers/phy/broadcom/phy-bcm-ns-usb3.c
@@ -13,6 +13,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -258,29 +259,24 @@ static int bcm_ns_usb3_mdio_probe(struct mdio_device 
*mdiodev)
  **/
 
 static int bcm_ns_usb3_wait_reg(struct bcm_ns_usb3 *usb3, void __iomem *addr,
-   u32 mask, u32 value, unsigned long timeout)
+   u32 mask, u32 value, int usec)
 {
-   unsigned long deadline = jiffies + timeout;
u32 val;
+   int ret;
 
-   do {
-   val = readl(addr);
-   if ((val & mask) == value)
-   return 0;
-   cpu_relax();
-   udelay(10);
-   } while (!time_after_eq(jiffies, deadline));
+   ret = readl_poll_timeout_atomic(addr, val, ((val & mask) == value),
+   10, usec);
+   if (ret)
+   dev_err(usb3->dev, "Timeout waiting for register %p\n", addr);
 
-   dev_err(usb3->dev, "Timeout waiting for register %p\n", addr);
-
-   return -EBUSY;
+   return ret;
 }
 
 static inline int bcm_ns_usb3_mii_mng_wait_idle(struct bcm_ns_usb3 *usb3)
 {
return bcm_ns_usb3_wait_reg(usb3, usb3->ccb_mii + BCMA_CCB_MII_MNG_CTL,
0x0100, 0x,
-   
usecs_to_jiffies(BCM_NS_USB3_MII_MNG_TIMEOUT_US));
+   BCM_NS_USB3_MII_MNG_TIMEOUT_US);
 }
 
 static int bcm_ns_usb3_platform_phy_write(struct bcm_ns_usb3 *usb3, u16 reg,
-- 
1.9.1