diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc8xxx/ddr')
| -rw-r--r-- | arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8xxx/ddr/main.c | 26 | 
2 files changed, 17 insertions, 11 deletions
| diff --git a/arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c b/arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c index 9adde3101..e958e138d 100644 --- a/arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c +++ b/arch/powerpc/cpu/mpc8xxx/ddr/lc_common_dimm_params.c @@ -44,7 +44,6 @@ compute_cas_latency_ddr3(const dimm_params_t *dimm_params,  		printf("DDR clock (MCLK cycle %u ps) is faster than "  			"the slowest DIMM(s) (tCKmin %u ps) can support.\n",  			mclk_ps, tCKmin_X_ps); -		return 1;  	}  	/* determine the acutal cas latency */  	caslat_actual = (tAAmin_ps + mclk_ps - 1) / mclk_ps; @@ -60,7 +59,6 @@ compute_cas_latency_ddr3(const dimm_params_t *dimm_params,  	if (caslat_actual * mclk_ps > 20000) {  		printf("The choosen cas latency %d is too large\n",  			caslat_actual); -		return 1;  	}  	outpdimm->lowest_common_SPD_caslat = caslat_actual; diff --git a/arch/powerpc/cpu/mpc8xxx/ddr/main.c b/arch/powerpc/cpu/mpc8xxx/ddr/main.c index 5311a262a..7a8636de1 100644 --- a/arch/powerpc/cpu/mpc8xxx/ddr/main.c +++ b/arch/powerpc/cpu/mpc8xxx/ddr/main.c @@ -186,7 +186,7 @@ const char * step_to_string(unsigned int step) {  	return step_string_tbl[s];  } -unsigned long long step_assign_addresses(fsl_ddr_info_t *pinfo, +static unsigned long long __step_assign_addresses(fsl_ddr_info_t *pinfo,  			  unsigned int dbw_cap_adj[])  {  	int i, j; @@ -354,6 +354,11 @@ unsigned long long step_assign_addresses(fsl_ddr_info_t *pinfo,  	return total_mem;  } +/* Use weak function to allow board file to override the address assignment */ +__attribute__((weak, alias("__step_assign_addresses"))) +unsigned long long step_assign_addresses(fsl_ddr_info_t *pinfo, +			  unsigned int dbw_cap_adj[]); +  unsigned long long  fsl_ddr_compute(fsl_ddr_info_t *pinfo, unsigned int start_step,  				       unsigned int size_only) @@ -541,14 +546,17 @@ phys_size_t fsl_ddr_sdram(void)  		total_memory = fsl_ddr_compute(&info, STEP_GET_SPD, 0);  	/* setup 3-way interleaving before enabling DDRC */ -	switch (info.memctl_opts[0].memctl_interleaving_mode) { -	case FSL_DDR_3WAY_1KB_INTERLEAVING: -	case FSL_DDR_3WAY_4KB_INTERLEAVING: -	case FSL_DDR_3WAY_8KB_INTERLEAVING: -		fsl_ddr_set_intl3r(info.memctl_opts[0].memctl_interleaving_mode); -		break; -	default: -		break; +	if (info.memctl_opts[0].memctl_interleaving) { +		switch (info.memctl_opts[0].memctl_interleaving_mode) { +		case FSL_DDR_3WAY_1KB_INTERLEAVING: +		case FSL_DDR_3WAY_4KB_INTERLEAVING: +		case FSL_DDR_3WAY_8KB_INTERLEAVING: +			fsl_ddr_set_intl3r( +				info.memctl_opts[0].memctl_interleaving_mode); +			break; +		default: +			break; +		}  	}  	/* Program configuration registers. */ |