]> git.sur5r.net Git - u-boot/commitdiff
mmc: bcm2835_sdhci: Speed up mmc writes.
authorJocelyn Bohr <bohr@google.com>
Sun, 2 Apr 2017 08:24:33 +0000 (01:24 -0700)
committerJaehoon Chung <jh80.chung@samsung.com>
Fri, 14 Apr 2017 06:23:03 +0000 (15:23 +0900)
The linux kernel driver for this module does not use a delay when
writing to the SDHCI_BUFFER register. This patch mimics that behavior
in order to speed up the mmc writes on the Raspberry Pi.

Signed-off-by: Alex Deymo <deymo@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/mmc/bcm2835_sdhci.c

index 29c2a85812fc4a0ad3a44f70d9caefd88d0af56b..20079bce48b81819e923f51b98aa8100b0a49cad 100644 (file)
@@ -44,6 +44,7 @@
 
 /* 400KHz is max freq for card ID etc. Use that as min */
 #define MIN_FREQ 400000
+#define SDHCI_BUFFER 0x20
 
 struct bcm2835_sdhci_host {
        struct sdhci_host host;
@@ -69,8 +70,11 @@ static inline void bcm2835_sdhci_raw_writel(struct sdhci_host *host, u32 val,
         * (Which is just as well - otherwise we'd have to nobble the DMA engine
         * too)
         */
-       while (timer_get_us() - bcm_host->last_write < bcm_host->twoticks_delay)
-               ;
+       if (reg != SDHCI_BUFFER) {
+               while (timer_get_us() - bcm_host->last_write <
+                      bcm_host->twoticks_delay)
+                       ;
+       }
 
        writel(val, host->ioaddr + reg);
        bcm_host->last_write = timer_get_us();