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

mmc: sdhci-of-esdhc: temporary fixup for eMMC HS400 issue

Currently only LX2160A eSDHC supports eMMC HS400. According to
a large number of tests, eMMC HS400 failed to work at 150MHz,
and for a few boards failed to work at 175MHz. But eMMC HS400
worked fine on 200MHz. We hadn't found the root cause but
setting eSDHC_DLLCFG0[DLL_FREQ_SEL] = 0 using slow delay chain
seemed to resovle this issue. Let's use this as fixup for now.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Yangbo Lu and committed by
Ulf Hansson
58d0bf84 6079e63c

+3 -1
+3 -1
drivers/mmc/host/sdhci-of-esdhc.c
··· 623 623 esdhc_clock_enable(host, true); 624 624 625 625 temp = sdhci_readl(host, ESDHC_DLLCFG0); 626 - temp |= ESDHC_DLL_ENABLE | ESDHC_DLL_FREQ_SEL; 626 + temp |= ESDHC_DLL_ENABLE; 627 + if (host->mmc->actual_clock == MMC_HS200_MAX_DTR) 628 + temp |= ESDHC_DLL_FREQ_SEL; 627 629 sdhci_writel(host, temp, ESDHC_DLLCFG0); 628 630 temp = sdhci_readl(host, ESDHC_TBCTL); 629 631 sdhci_writel(host, temp | ESDHC_HS400_WNDW_ADJUST, ESDHC_TBCTL);