Commit a57b13b9 by Ye Li Committed by Robby Cai

MLK-14707 fsl_esdhc: Fix eMMC 1.8v setting issue

Current USDHC driver will reset VSELECT to 0 (3.3v) during mmc init, then set to 1 for 1.8v eMMC I/O. When booting from eMMC, since ROM has already set VSELECT to 1.8v before running the u-boot. This reset in USDHC driver causes a short 2.2v pulse on CMD pin. Fix this issue by not reset VSELECT to 0 when 1.8v flag is set. Signed-off-by: 's avatarYe Li <ye.li@nxp.com> (cherry picked from commit f01ebfda)
parent 568c9c99
...@@ -611,7 +611,10 @@ static int esdhc_init(struct mmc *mmc) ...@@ -611,7 +611,10 @@ static int esdhc_init(struct mmc *mmc)
esdhc_write32(&regs->clktunectrlstatus, 0x0); esdhc_write32(&regs->clktunectrlstatus, 0x0);
/* Put VEND_SPEC to default value */ /* Put VEND_SPEC to default value */
esdhc_write32(&regs->vendorspec, VENDORSPEC_INIT); if (cfg->vs18_enable)
esdhc_write32(&regs->vendorspec, (VENDORSPEC_INIT | ESDHC_VENDORSPEC_VSELECT));
else
esdhc_write32(&regs->vendorspec, VENDORSPEC_INIT);
/* Disable DLL_CTRL delay line */ /* Disable DLL_CTRL delay line */
esdhc_write32(&regs->dllctrl, 0x0); esdhc_write32(&regs->dllctrl, 0x0);
...@@ -640,9 +643,6 @@ static int esdhc_init(struct mmc *mmc) ...@@ -640,9 +643,6 @@ static int esdhc_init(struct mmc *mmc)
/* Set timout to the maximum value */ /* Set timout to the maximum value */
esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16); esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);
if (cfg->vs18_enable)
esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment