mmc: fsl_esdhc: Add support to force VSELECT set
authorOtavio Salvador <otavio@ossystems.com.br>
Tue, 17 Feb 2015 12:42:44 +0000 (10:42 -0200)
committerStefano Babic <sbabic@denx.de>
Mon, 23 Feb 2015 08:11:42 +0000 (09:11 +0100)
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>
doc/README.fsl-esdhc
drivers/mmc/fsl_esdhc.c

index b70f271d1a473d283a0e9ae632e6901b9e65d455..619c6b2d07bcab8bd2486748ad3b5028059659b9 100644 (file)
@@ -1,5 +1,6 @@
 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_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_FORCE_VSELECT forces to run at 1.8V.
 
 Accessing ESDHC registers can be determined by ESDHC IP's endian
 mode or processor's endian mode.
 
 Accessing ESDHC registers can be determined by ESDHC IP's endian
 mode or processor's endian mode.
index 6a3e147ed28a0be27f4f82c47df4b6bdce919ec5..67ee179f86b82740a02fb44763bc9527989b23a9 100644 (file)
@@ -523,6 +523,10 @@ static int esdhc_init(struct mmc *mmc)
        /* Set timout to the maximum value */
        esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);
 
        /* Set timout to the maximum value */
        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;
 }