From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deymo Date: Sun, 2 Apr 2017 01:24:33 -0700 Subject: [U-Boot] [PATCH 1/2] mmc: bcm2835_sdhci: Speed up mmc writes. In-Reply-To: <20170402082434.32078-1-deymo@google.com> References: <20170402082434.32078-1-deymo@google.com> Message-ID: <20170402082434.32078-2-deymo@google.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Jocelyn Bohr 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 --- drivers/mmc/bcm2835_sdhci.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c index 29c2a85812..20079bce48 100644 --- a/drivers/mmc/bcm2835_sdhci.c +++ b/drivers/mmc/bcm2835_sdhci.c @@ -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(); -- 2.12.2.564.g063fe858b8-goog