Since esdhc_init_common() can fail it should return an error code. Update
this and also adjust the timeout mechanism to use get_timer(), which is a
more common approach.

Signed-off-by: Simon Glass <s...@chromium.org>
---

Changes in v2: None

 drivers/mmc/fsl_esdhc.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index f975c425d2..1cf0faea81 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -621,14 +621,17 @@ static int esdhc_set_ios_common(struct fsl_esdhc_priv 
*priv, struct mmc *mmc)
 static int esdhc_init_common(struct fsl_esdhc_priv *priv, struct mmc *mmc)
 {
        struct fsl_esdhc *regs = priv->esdhc_regs;
-       int timeout = 1000;
+       ulong start;
 
        /* Reset the entire host controller */
        esdhc_setbits32(&regs->sysctl, SYSCTL_RSTA);
 
        /* Wait until the controller is available */
-       while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA) && --timeout)
-               udelay(1000);
+       start = get_timer(0);
+       while ((esdhc_read32(&regs->sysctl) & SYSCTL_RSTA)) {
+               if (get_timer(start) > 1000)
+                       return -ETIMEDOUT;
+       }
 
 #if defined(CONFIG_FSL_USDHC)
        /* RSTA doesn't reset MMC_BOOT register, so manually reset it */
-- 
2.14.0.rc0.400.g1c36432dff-goog

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to