Make use of mhi_poll_reg_field() API in order to poll for RDDM
download in panic path to employ a common approach throughout the
driver.

Signed-off-by: Bhaumik Bhatt <[email protected]>
Reviewed-by: Jeffrey Hugo <[email protected]>
---
 drivers/bus/mhi/core/boot.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c
index c2546bf..b9c44e0 100644
--- a/drivers/bus/mhi/core/boot.c
+++ b/drivers/bus/mhi/core/boot.c
@@ -60,7 +60,6 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller 
*mhi_cntrl)
        u32 rx_status;
        enum mhi_ee_type ee;
        const u32 delayus = 2000;
-       u32 retry = (mhi_cntrl->timeout_ms * 1000) / delayus;
        const u32 rddm_timeout_us = 200000;
        int rddm_retry = rddm_timeout_us / delayus;
        void __iomem *base = mhi_cntrl->bhie;
@@ -125,19 +124,12 @@ static int __mhi_download_rddm_in_panic(struct 
mhi_controller *mhi_cntrl)
                "Waiting for RDDM image download via BHIe, current EE:%s\n",
                TO_MHI_EXEC_STR(ee));
 
-       while (retry--) {
-               ret = mhi_read_reg_field(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS,
-                                        BHIE_RXVECSTATUS_STATUS_BMSK,
-                                        BHIE_RXVECSTATUS_STATUS_SHFT,
-                                        &rx_status);
-               if (ret)
-                       return -EIO;
-
-               if (rx_status == BHIE_RXVECSTATUS_STATUS_XFER_COMPL)
-                       return 0;
-
-               udelay(delayus);
-       }
+       ret = mhi_poll_reg_field(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS,
+                                BHIE_RXVECSTATUS_STATUS_BMSK,
+                                BHIE_RXVECSTATUS_STATUS_SHFT,
+                                BHIE_RXVECSTATUS_STATUS_XFER_COMPL, delayus);
+       if (!ret)
+               return 0;
 
        ee = mhi_get_exec_env(mhi_cntrl);
        ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, &rx_status);
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

Reply via email to