[U-Boot-Users] [patch] Fix DDR6 errata on TQM834x boards
Martin Krause
Martin.Krause at tqs.de
Fri Mar 10 08:16:07 CET 2006
Kumar Gala wrote on Thursday, March 09, 2006 6:18 PM:
> Why dont you make this a runtime check since I believe this errata is
> suppose to be fixed in rev2.0
>
> Something like:
>
> if (((get_pvr() >> 4) & 0xf) == 1) {
> ...
> }
Um, in my opinion the patch does a runtime check of the cpu revision,
only the written value is dependent on the configured CAS latency.
Or am I missing someting?
diff --git a/board/tqm834x/tqm834x.c b/board/tqm834x/tqm834x.c
index dada673..b9fd5bd 100644
--- a/board/tqm834x/tqm834x.c
+++ b/board/tqm834x/tqm834x.c
@@ -405,4 +405,28 @@ static void set_ddr_config(void) {
(DDR_REFINT_166MHZ_7US << SDRAM_INTERVAL_REFINT_SHIFT) |
(DDR_BSTOPRE << SDRAM_INTERVAL_BSTOPRE_SHIFT);
SYNC;
+
+ /* Workaround for DDR6 Erratum
+ * see MPC8349E Device Errata Rev.8, 2/2006
+ * This workaround influences the MPC internal "input enables"
+ * dependent on CAS latency and MPC revision. According to errata
+ * sheet the internal reserved registers for this workaround are
+ * not available from revision 2.0 and up.
+ */
+
+ /* Get REVID from register SPRIDR. Skip workaround if rev >= 2.0
+ * (0x200)
+ */
+ if ((im->sysconf.spridr & SPRIDR_REVID) < 0x200) {
+
+ /* There is a internal reserved register at IMMRBAR+0x2F00
+ * which has to be written with a certain value defined by
+ * errata sheet.
+ */
+#if defined(DDR_CASLAT_20)
+ *((u8 *)im + 0x2f00) = 0x201c0000;
+#else
+ *((u8 *)im + 0x2f00) = 0x202c0000;
+#endif
+ }
}
Regards,
Martin
More information about the U-Boot
mailing list