[U-Boot] [PATCH 1/2] powerpc/mpc8xxx: Fix DDR3 timing_cfg_1 and sdram_mode registers

York Sun yorksun at freescale.com
Wed Mar 2 19:50:40 CET 2011


The write recovery time of both registers should match. Since mode register
doesn't support cycles of 9,11,13,15, we should use next higher number for
both registers.

Signed-off-by: York Sun <yorksun at freescale.com>
---
 arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c b/arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c
index 41bad35..52bbe76 100644
--- a/arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c
+++ b/arch/powerpc/cpu/mpc8xxx/ddr/ctrl_regs.c
@@ -371,6 +371,21 @@ static void set_timing_cfg_1(fsl_ddr_cfg_regs_t *ddr,
 
 	refrec_ctrl = picos_to_mclk(common_dimm->tRFC_ps) - 8;
 	wrrec_mclk = picos_to_mclk(common_dimm->tWR_ps);
+
+	switch (wrrec_mclk) { /* DDR_SDRAM_MODE doesn't support 9,11,13,15 */
+	case 9:
+		wrrec_mclk = 10;
+		break;
+	case 11:
+		wrrec_mclk = 12;
+		break;
+	case 13:
+		wrrec_mclk = 14;
+		break;
+	case 16:
+		wrrec_mclk = 16;
+		break;
+	}
 	if (popts->OTF_burst_chop_en)
 		wrrec_mclk += 2;
 
@@ -854,12 +869,17 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
 	 */
 	dll_on = 1;
 	wr_mclk = (common_dimm->tWR_ps + mclk_ps - 1) / mclk_ps;
-	if (wr_mclk >= 12)
-		wr = 6;
+	if (wr_mclk >= 15)
+		wr = 0;	/* 16 cycles */
+	else if (wr_mclk >= 13)
+		wr = 7;	/* 14 cycles */
+	else if (wr_mclk >= 11)
+		wr = 6;	/* 12 cycles */
 	else if (wr_mclk >= 9)
-		wr = 5;
+		wr = 5;		/* 10 cycles */
 	else
-		wr = wr_mclk - 4;
+		wr = wr_mclk - 4;	/* 5~8 cycles */
+
 	dll_rst = 0;	/* dll no reset */
 	mode = 0;	/* normal mode */
 
-- 
1.7.0.4




More information about the U-Boot mailing list