armv8/ls2085a: Add workaround for USB erratum A-008751
authorScott Wood <scottwood@freescale.com>
Sat, 21 Mar 2015 02:28:13 +0000 (19:28 -0700)
committerYork Sun <yorksun@freescale.com>
Thu, 23 Apr 2015 15:55:56 +0000 (08:55 -0700)
Without this "USB may not work" according to the erratum text, though I
did not notice a problem without it.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: York Sun <yorksun@freescale.com>
arch/arm/cpu/armv8/fsl-lsch3/soc.c
arch/arm/include/asm/arch-fsl-lsch3/config.h

index 242a865db8b6c8a4976572052d71b8fa4027f2d8..17700ef94e90fd4e1a27aa3150f2ac883f0e81c6 100644 (file)
@@ -7,8 +7,19 @@
 #include <common.h>
 #include <fsl_ifc.h>
 #include <asm/arch-fsl-lsch3/soc.h>
+#include <asm/io.h>
+
+static void erratum_a008751(void)
+{
+#ifdef CONFIG_SYS_FSL_ERRATUM_A008751
+       u32 __iomem *scfg = (u32 __iomem *)SCFG_BASE;
+
+       writel(0x27672b2a, scfg + SCFG_USB3PRM1CR / 4);
+#endif
+}
 
 void fsl_lsch3_early_init_f(void)
 {
+       erratum_a008751();
        init_early_memctl_regs();       /* tighten IFC timing */
 }
index 91214524117dd764ad257304cea6cb2c2a553de1..a81e3edafd6ffb1a978fa17375c4e7f1117c6f79 100644 (file)
 #define CCI_MN_DVM_DOMAIN_CTL          0x200
 #define CCI_MN_DVM_DOMAIN_CTL_SET      0x210
 
+/* Supplemental Configuration */
+#define SCFG_BASE              0x01fc0000
+#define SCFG_USB3PRM1CR                        0x000
+
 #ifdef CONFIG_LS2085A
 #define CONFIG_MAX_CPUS                                16
 #define CONFIG_SYS_FSL_IFC_BANK_COUNT          8
 #define CONFIG_SYS_FSL_ERRATUM_A008511
 #define CONFIG_SYS_FSL_ERRATUM_A008514
 #define CONFIG_SYS_FSL_ERRATUM_A008585
+#define CONFIG_SYS_FSL_ERRATUM_A008751
 #endif
 
 #endif /* _ASM_ARMV8_FSL_LSCH3_CONFIG_ */