Skip to content
Snippets Groups Projects
Commit fcea3068 authored by York Sun's avatar York Sun Committed by Andy Fleming
Browse files

powerpc/mpc8xxx: Add support for cas latency 12 and above


Required by JEDEC 79-3E for high speed DDR3.
Also change "CSn disabled" message to debug.

Signed-off-by: default avatarYork Sun <yorksun@freescale.com>
Signed-off-by: default avatarAndy Fleming <afleming@freescale.com>
parent 73b5396b
No related branches found
No related tags found
No related merge requests found
/* /*
* Copyright 2008-2011 Freescale Semiconductor, Inc. * Copyright 2008-2012 Freescale Semiconductor, Inc.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
...@@ -825,7 +825,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr, ...@@ -825,7 +825,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
/* Mode Register - MR0 */ /* Mode Register - MR0 */
unsigned int dll_on; /* DLL control for precharge PD, 0=off, 1=on */ unsigned int dll_on; /* DLL control for precharge PD, 0=off, 1=on */
unsigned int wr; /* Write Recovery */ unsigned int wr = 0; /* Write Recovery */
unsigned int dll_rst; /* DLL Reset */ unsigned int dll_rst; /* DLL Reset */
unsigned int mode; /* Normal=0 or Test=1 */ unsigned int mode; /* Normal=0 or Test=1 */
unsigned int caslat = 4;/* CAS# latency, default set as 6 cycles */ unsigned int caslat = 4;/* CAS# latency, default set as 6 cycles */
...@@ -885,24 +885,37 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr, ...@@ -885,24 +885,37 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
dll_on = 1; dll_on = 1;
wr_mclk = (common_dimm->tWR_ps + mclk_ps - 1) / mclk_ps; wr_mclk = (common_dimm->tWR_ps + mclk_ps - 1) / mclk_ps;
wr = wr_table[wr_mclk - 5]; if (wr_mclk <= 16) {
wr = wr_table[wr_mclk - 5];
} else {
printf("Error: unsupported write recovery for mode register "
"wr_mclk = %d\n", wr_mclk);
}
dll_rst = 0; /* dll no reset */ dll_rst = 0; /* dll no reset */
mode = 0; /* normal mode */ mode = 0; /* normal mode */
/* look up table to get the cas latency bits */ /* look up table to get the cas latency bits */
if (cas_latency >= 5 && cas_latency <= 11) { if (cas_latency >= 5 && cas_latency <= 16) {
unsigned char cas_latency_table[7] = { unsigned char cas_latency_table[] = {
0x2, /* 5 clocks */ 0x2, /* 5 clocks */
0x4, /* 6 clocks */ 0x4, /* 6 clocks */
0x6, /* 7 clocks */ 0x6, /* 7 clocks */
0x8, /* 8 clocks */ 0x8, /* 8 clocks */
0xa, /* 9 clocks */ 0xa, /* 9 clocks */
0xc, /* 10 clocks */ 0xc, /* 10 clocks */
0xe /* 11 clocks */ 0xe, /* 11 clocks */
0x1, /* 12 clocks */
0x3, /* 13 clocks */
0x5, /* 14 clocks */
0x7, /* 15 clocks */
0x9, /* 16 clocks */
}; };
caslat = cas_latency_table[cas_latency - 5]; caslat = cas_latency_table[cas_latency - 5];
} else {
printf("Error: unsupported cas latency for mode register\n");
} }
bt = 0; /* Nibble sequential */ bt = 0; /* Nibble sequential */
switch (popts->burst_length) { switch (popts->burst_length) {
...@@ -930,6 +943,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr, ...@@ -930,6 +943,7 @@ static void set_ddr_sdram_mode(fsl_ddr_cfg_regs_t *ddr,
| ((mode & 0x1) << 7) | ((mode & 0x1) << 7)
| (((caslat >> 1) & 0x7) << 4) | (((caslat >> 1) & 0x7) << 4)
| ((bt & 0x1) << 3) | ((bt & 0x1) << 3)
| ((caslat & 1) << 2)
| ((bl & 0x3) << 0) | ((bl & 0x3) << 0)
); );
...@@ -1574,7 +1588,7 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts, ...@@ -1574,7 +1588,7 @@ compute_fsl_memctl_config_regs(const memctl_options_t *popts,
set_csn_config(dimm_number, i, ddr, popts, dimm_params); set_csn_config(dimm_number, i, ddr, popts, dimm_params);
set_csn_config_2(i, ddr); set_csn_config_2(i, ddr);
} else } else
printf("CS%d is disabled.\n", i); debug("CS%d is disabled.\n", i);
} }
/* /*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment