summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrikanth Srinivasan <srikanth.srinivasan@freescale.com>2010-01-06 14:32:38 +0800
committerScott Sweeny <scott.sweeny@timesys.com>2010-09-29 17:32:28 -0400
commit3f4879e4dd0a248ad96dbe11d86709a1edeb57ae (patch)
treec84e031451afb1e1a5c9b3e97432cce00b45e337
parentba2c05a72faf66fd23063cf066d8500539eb4e1c (diff)
esdhc errata workaround
In Rev 1.0 of P1022, in the esdhc Host Capabilities register the 1.8V bit is set; it should not be. So we exclude this setting in the driver. Signed-off-by: Srikanth Srinivasan <srikanth.srinivasan@freescale.com>
-rw-r--r--drivers/mmc/fsl_esdhc.c3
-rw-r--r--include/configs/P1022DS.h6
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index c6e9e6e782..48e7830bd3 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -324,8 +324,11 @@ static int esdhc_initialize(bd_t *bis)
caps = regs->hostcapblt;
+ /* 1.8V incorrectly set in hardware on P1022 eSDHC */
+#ifndef P1022_REV1_SDHC_ERRATUM_WORKAROUND
if (caps & ESDHC_HOSTCAPBLT_VS18)
mmc->voltages |= MMC_VDD_165_195;
+#endif
if (caps & ESDHC_HOSTCAPBLT_VS30)
mmc->voltages |= MMC_VDD_29_30 | MMC_VDD_30_31;
if (caps & ESDHC_HOSTCAPBLT_VS33)
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index 4fc39be3d3..85c7a94a61 100644
--- a/include/configs/P1022DS.h
+++ b/include/configs/P1022DS.h
@@ -555,6 +555,12 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy);
#define CONFIG_SYS_FSL_ESDHC_ADDR CONFIG_SYS_MPC85xx_ESDHC_ADDR
#endif
+/* In Rev 1.0 of P1022, in the Host Capabilities register
+ * the 1.8V bit is set; it should not be. So we exclude this
+ * setting in the driver.
+ */
+#define P1022_REV1_SDHC_ERRATUM_WORKAROUND 1
+
#if defined(CONFIG_MMC) || defined(CONFIG_USB_EHCI)
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_FAT