dm: core: Add basic ACPI support
[oweals/u-boot.git] / drivers / mmc / bcm2835_sdhost.c
index 1ce019af579fb5b1e06bb04ac816733678bb51cf..8cebf99c589dc6db12fe71f3c632bdfa452ebca3 100644 (file)
@@ -36,6 +36,7 @@
 #include <asm/arch/msg.h>
 #include <asm/arch/mbox.h>
 #include <asm/unaligned.h>
+#include <dm/device_compat.h>
 #include <linux/compat.h>
 #include <linux/io.h>
 #include <linux/iopoll.h>
@@ -234,7 +235,7 @@ static void bcm2835_reset_internal(struct bcm2835_host *host)
 
 static int bcm2835_wait_transfer_complete(struct bcm2835_host *host)
 {
-       int timediff = 0;
+       ulong tstart_ms = get_timer(0);
 
        while (1) {
                u32 edm, fsm;
@@ -254,11 +255,13 @@ static int bcm2835_wait_transfer_complete(struct bcm2835_host *host)
                        break;
                }
 
-               /* Error out after 100000 register reads (~1s) */
-               if (timediff++ == 100000) {
+               /* Error out after ~1s */
+               ulong tlapse_ms = get_timer(tstart_ms);
+               if ( tlapse_ms > 1000 /* ms */ ) {
+
                        dev_err(host->dev,
-                               "wait_transfer_complete - still waiting after %d retries\n",
-                               timediff);
+                               "wait_transfer_complete - still waiting after %lu ms\n",
+                               tlapse_ms);
                        bcm2835_dumpregs(host);
                        return -ETIMEDOUT;
                }