Commit 56848428 authored by York Sun's avatar York Sun
Browse files

drivers/ddr/fsl: Adjust bstopre value



By default the bstopre value has been set to 0x100, used to be 1/4
value of refint. Modern DDR has increased the refresh time. Adjust
to 1/4 of refresh interval dynamically. Individual board can still
override this value in board ddr file, or to use auto-precharge.
Signed-off-by: default avatarYork Sun <yorksun@freescale.com>
parent 14d5547c
...@@ -535,7 +535,7 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step, ...@@ -535,7 +535,7 @@ fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,
* which is currently STEP_ASSIGN_ADDRESSES. * which is currently STEP_ASSIGN_ADDRESSES.
*/ */
populate_memctl_options( populate_memctl_options(
timing_params[i].all_dimms_registered, &timing_params[i],
&pinfo->memctl_opts[i], &pinfo->memctl_opts[i],
pinfo->dimm_params[i], i); pinfo->dimm_params[i], i);
/* /*
......
...@@ -499,7 +499,7 @@ static inline unsigned int auto_bank_intlv(dimm_params_t *pdimm) ...@@ -499,7 +499,7 @@ static inline unsigned int auto_bank_intlv(dimm_params_t *pdimm)
return 0; return 0;
} }
unsigned int populate_memctl_options(int all_dimms_registered, unsigned int populate_memctl_options(const common_timing_params_t *common_dimm,
memctl_options_t *popts, memctl_options_t *popts,
dimm_params_t *pdimm, dimm_params_t *pdimm,
unsigned int ctrl_num) unsigned int ctrl_num)
...@@ -640,7 +640,7 @@ unsigned int populate_memctl_options(int all_dimms_registered, ...@@ -640,7 +640,7 @@ unsigned int populate_memctl_options(int all_dimms_registered,
popts->ba_intlv_ctl = 0; popts->ba_intlv_ctl = 0;
/* Memory Organization Parameters */ /* Memory Organization Parameters */
popts->registered_dimm_en = all_dimms_registered; popts->registered_dimm_en = common_dimm->all_dimms_registered;
/* Operational Mode Paramters */ /* Operational Mode Paramters */
...@@ -778,9 +778,11 @@ unsigned int populate_memctl_options(int all_dimms_registered, ...@@ -778,9 +778,11 @@ unsigned int populate_memctl_options(int all_dimms_registered,
* Set this to 0 for global auto precharge * Set this to 0 for global auto precharge
* The value of 0x100 has been used for DDR1, DDR2, DDR3. * The value of 0x100 has been used for DDR1, DDR2, DDR3.
* It is not wrong. Any value should be OK. The performance depends on * It is not wrong. Any value should be OK. The performance depends on
* applications. There is no one good value for all. * applications. There is no one good value for all. One way to set
* is to use 1/4 of refint value.
*/ */
popts->bstopre = 0x100; popts->bstopre = picos_to_mclk(ctrl_num, common_dimm->refresh_rate_ps)
>> 2;
/* /*
* Window for four activates -- tFAW * Window for four activates -- tFAW
......
...@@ -103,7 +103,7 @@ unsigned int compute_lowest_common_dimm_parameters( ...@@ -103,7 +103,7 @@ unsigned int compute_lowest_common_dimm_parameters(
const dimm_params_t *dimm_params, const dimm_params_t *dimm_params,
common_timing_params_t *outpdimm, common_timing_params_t *outpdimm,
unsigned int number_of_dimms); unsigned int number_of_dimms);
unsigned int populate_memctl_options(int all_dimms_registered, unsigned int populate_memctl_options(const common_timing_params_t *common_dimm,
memctl_options_t *popts, memctl_options_t *popts,
dimm_params_t *pdimm, dimm_params_t *pdimm,
unsigned int ctrl_num); unsigned int ctrl_num);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment