mmc: fsl_esdhc: Add support to force VSELECT set

Some boards cannot do voltage negotiation but need to set the VSELECT
bit forcely to ensure it to work at 1.8V.

This commit adds CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT flag for this use.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
master
Otavio Salvador 10 years ago committed by Stefano Babic
parent f022d36e8a
commit ee0c538951
  1. 1
      doc/README.fsl-esdhc
  2. 4
      drivers/mmc/fsl_esdhc.c

@ -1,5 +1,6 @@
CONFIG_SYS_FSL_ESDHC_LE means ESDHC IP is in little-endian mode. CONFIG_SYS_FSL_ESDHC_LE means ESDHC IP is in little-endian mode.
CONFIG_SYS_FSL_ESDHC_BE means ESDHC IP is in big-endian mode. CONFIG_SYS_FSL_ESDHC_BE means ESDHC IP is in big-endian mode.
CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT forces to run at 1.8V.
Accessing ESDHC registers can be determined by ESDHC IP's endian Accessing ESDHC registers can be determined by ESDHC IP's endian
mode or processor's endian mode. mode or processor's endian mode.

@ -523,6 +523,10 @@ 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);
#ifdef CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT
esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
#endif
return 0; return 0;
} }

Loading…
Cancel
Save