mmc: 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: Ye Li <ye.li@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
8c0bb85824
commit
db359efd59
@ -647,7 +647,11 @@ static int esdhc_init_common(struct fsl_esdhc_priv *priv, struct mmc *mmc)
|
||||
esdhc_write32(®s->clktunectrlstatus, 0x0);
|
||||
|
||||
/* Put VEND_SPEC to default value */
|
||||
esdhc_write32(®s->vendorspec, VENDORSPEC_INIT);
|
||||
if (priv->vs18_enable)
|
||||
esdhc_write32(®s->vendorspec, (VENDORSPEC_INIT |
|
||||
ESDHC_VENDORSPEC_VSELECT));
|
||||
else
|
||||
esdhc_write32(®s->vendorspec, VENDORSPEC_INIT);
|
||||
|
||||
/* Disable DLL_CTRL delay line */
|
||||
esdhc_write32(®s->dllctrl, 0x0);
|
||||
@ -676,9 +680,6 @@ static int esdhc_init_common(struct fsl_esdhc_priv *priv, struct mmc *mmc)
|
||||
/* Set timout to the maximum value */
|
||||
esdhc_clrsetbits32(®s->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);
|
||||
|
||||
if (priv->vs18_enable)
|
||||
esdhc_setbits32(®s->vendorspec, ESDHC_VENDORSPEC_VSELECT);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user