fsl_esdhc: Add the workaround for erratum ESDHC135 (enable on P4080)
authorRoy Zang <tie-fei.zang@freescale.com>
Fri, 7 Jan 2011 06:06:47 +0000 (00:06 -0600)
committerKumar Gala <galak@kernel.crashing.org>
Fri, 14 Jan 2011 07:32:22 +0000 (01:32 -0600)
The default value of the SRS, VS18 and VS30 and ADMAS fields in the host
controller capabilities register (HOSTCAPBLT) are incorrect. The default
of these bits should be zero instead of one.

Clear these bits out when we read HOSTCAPBLT.

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/cpu/mpc85xx/cmd_errata.c
drivers/mmc/fsl_esdhc.c
include/configs/P4080DS.h

index 0c4820c089448737db768907205137eae480ba1d..d5c34c867f709a7157a7b93877e2b08b7959741d 100644 (file)
@@ -52,6 +52,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #endif
 #if defined(CONFIG_SYS_FSL_ERRATUM_ESDHC111)
        puts("Work-around for Erratum ESDHC111 enabled\n");
+#endif
+#if defined(CONFIG_SYS_FSL_ERRATUM_ESDHC135)
+       puts("Work-around for Erratum ESDHC135 enabled\n");
 #endif
        return 0;
 }
index fe94164b0d9a31b762a5057c1ce6827979f42430..d01c926c4554debbe4fc6e61239d49cfbfc40ab0 100644 (file)
@@ -472,6 +472,11 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)
 
        voltage_caps = 0;
        caps = regs->hostcapblt;
+
+#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC135
+       caps = caps & ~(ESDHC_HOSTCAPBLT_SRS |
+                       ESDHC_HOSTCAPBLT_VS18 | ESDHC_HOSTCAPBLT_VS30);
+#endif
        if (caps & ESDHC_HOSTCAPBLT_VS18)
                voltage_caps |= MMC_VDD_165_195;
        if (caps & ESDHC_HOSTCAPBLT_VS30)
index 705b22601b0e6e73c3aa028f43030afa23bc483b..a15dd761b8f4e04a258acef024753461918dfa04 100644 (file)
@@ -36,6 +36,7 @@
 #define CONFIG_ICS307_REFCLK_HZ                33333000  /* ICS307 ref clk freq */
 
 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111
+#define CONFIG_SYS_FSL_ERRATUM_ESDHC135
 
 #define CONFIG_SYS_P4080_ERRATUM_CPU22
 #define CONFIG_SYS_P4080_ERRATUM_SERDES8