Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: sdhci-esdhc-imx: change default watermark level and burst length

By default, for all imx SoC types, the watermark level is 16, and the
burst length is 8. But if the SDIO/SD/MMC I/O speed is fast enough,
this default watermark level and burst length will be the performance
bottleneck.

For example, i.MX7D support eMMC HS400 mode, this mode can run in 8 bit,
200MHZ DDR mode. So the I/O speed improve a lot compare to SD3.0.
The default burst length is 8, if we don't change this value, in
HS400 mode, when we do eMMC read operation, we can find that the
clock signal will stop for a period of time. This means the speed
of data moving on AHB bus is slower than I/O speed. So we should
improve the speed of data moving on AHB bus.

This patch set the default burst length as 16, and set the default
watermark level as 64. The test result is the clock signal has
no stop during the eMMC HS400 operation.

Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Acked-by: Dong Aisheng <aisheng.dong@freescale.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Haibo Chen and committed by
Ulf Hansson
e31e67cf fd44954e

+2 -1
+2 -1
drivers/mmc/host/sdhci-esdhc-imx.c
··· 1160 1160 * to something insane. Change it back here. 1161 1161 */ 1162 1162 if (esdhc_is_usdhc(imx_data)) { 1163 - writel(0x08100810, host->ioaddr + ESDHC_WTMK_LVL); 1163 + writel(0x10401040, host->ioaddr + ESDHC_WTMK_LVL); 1164 + 1164 1165 host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; 1165 1166 host->mmc->caps |= MMC_CAP_1_8V_DDR; 1166 1167