]> git.sur5r.net Git - u-boot/commitdiff
ppc4xx: Fix DDR2 auto calibration on Kilauea 600MHz (200MHz PLB)
authorVictor Gallardo <vgallardo@amcc.com>
Tue, 16 Sep 2008 13:59:13 +0000 (06:59 -0700)
committerStefan Roese <sr@denx.de>
Tue, 16 Sep 2008 18:16:31 +0000 (20:16 +0200)
Signed-off-by: Victor Gallardo <vgallardo@amcc.com>
Signed-off-by: Adam Graham <agraham@amcc.com>
Signed-off-by: Stefan Roese <sr@denx.de>
board/amcc/kilauea/kilauea.c
cpu/ppc4xx/4xx_ibm_ddr2_autocalib.c
include/asm-ppc/ppc4xx-sdram.h

index f407e195be7b9533e05e119b38c54280d69e8c4d..1caa2fd43518924bb466d2bf5a708e438a62c9e5 100644 (file)
@@ -374,3 +374,34 @@ int post_hotkeys_pressed(void)
        return 0;       /* No hotkeys supported */
 }
 #endif /* CONFIG_POST */
+
+#if defined(CONFIG_PPC4xx_DDR_AUTOCALIBRATION)
+/*
+ * This is for quicker auto calibration boot up once WRDTR and CLKTR
+ * values for the kilauea board were determined and are therefore known.
+ *
+ * Use these scan options for PLB bus greater than or equal 200MHz
+ * else use the defaults. These options are known to return a cycle
+ * delay of T2 or better with a 200MHz PLB bus. Scanning the
+ * full list of WDTR/CLKTR should work, but currently it does not.
+ * HW team is investigating.
+ */
+/* List of (SDRAM_WRDTR.[WDTR], SDRAM_CLKTR.[CLKP]) pairs to try */
+struct sdram_timing quick_scan_options[] = {
+       {0, 3}, {1, 1}, {1, 2}, {1, 3},
+       {2, 1}, {2, 2}, {2, 3}, {3, 1},
+       {3, 2}, {4, 1}, {-1, -1}
+};
+
+ulong ddr_scan_option(ulong default_val)
+{
+       PPC4xx_SYS_INFO board_cfg;
+
+       get_sys_info(&board_cfg);
+
+       if (board_cfg.freqPLB >= 200000000)
+               return (ulong)(quick_scan_options);
+       else
+               return (ulong)default_val;
+}
+#endif /* CONFIG_PPC4xx_DDR_AUTOCALIBRATION */
index 83b9883a7726efa896300848fb4db4699f51b2dd..3ba8176917480687aadfe8232c90c069aedae1ea 100644 (file)
@@ -79,11 +79,6 @@ struct ddrautocal {
        u32 flags;
 };
 
-struct sdram_timing {
-       u32 wrdtr;
-       u32 clktr;
-};
-
 struct sdram_timing_clks {
        u32 wrdtr;
        u32 clktr;
index 8efa557972e6802d4f402e66d4853d9d203d7502..2ba5619d7df90c25db59dac05e898cc8188989eb 100644 (file)
 #endif /* CONFIG_SDRAM_PPC4xx_DENALI_DDR2 */
 
 #ifndef __ASSEMBLY__
+
+struct sdram_timing {
+       u32 wrdtr;
+       u32 clktr;
+};
+
 /*
  * Prototypes
  */