diff options
Diffstat (limited to 'arch/arm/cpu/armv7/omap-common/emif-common.c')
| -rw-r--r-- | arch/arm/cpu/armv7/omap-common/emif-common.c | 29 | 
1 files changed, 16 insertions, 13 deletions
| diff --git a/arch/arm/cpu/armv7/omap-common/emif-common.c b/arch/arm/cpu/armv7/omap-common/emif-common.c index 9eb1279d4..cdb443972 100644 --- a/arch/arm/cpu/armv7/omap-common/emif-common.c +++ b/arch/arm/cpu/armv7/omap-common/emif-common.c @@ -655,20 +655,27 @@ static u32 get_ddr_phy_ctrl_1(u32 freq, u8 RL)  	return phy;  } -static u32 get_emif_mem_size(struct emif_device_details *devices) +static u32 get_emif_mem_size(u32 base)  {  	u32 size_mbytes = 0, temp; +	struct emif_device_details dev_details; +	struct lpddr2_device_details cs0_dev_details, cs1_dev_details; +	u32 emif_nr = emif_num(base); -	if (!devices) -		return 0; +	emif_reset_phy(base); +	dev_details.cs0_device_details = emif_get_device_details(emif_nr, CS0, +						&cs0_dev_details); +	dev_details.cs1_device_details = emif_get_device_details(emif_nr, CS1, +						&cs1_dev_details); +	emif_reset_phy(base); -	if (devices->cs0_device_details) { -		temp = devices->cs0_device_details->density; +	if (dev_details.cs0_device_details) { +		temp = dev_details.cs0_device_details->density;  		size_mbytes += lpddr2_density_2_size_in_mbytes[temp];  	} -	if (devices->cs1_device_details) { -		temp = devices->cs1_device_details->density; +	if (dev_details.cs1_device_details) { +		temp = dev_details.cs1_device_details->density;  		size_mbytes += lpddr2_density_2_size_in_mbytes[temp];  	}  	/* convert to bytes */ @@ -1040,13 +1047,9 @@ static void do_sdram_init(u32 base)  	/* Return if no devices on this EMIF */  	if (!dev_details.cs0_device_details &&  	    !dev_details.cs1_device_details) { -		emif_sizes[emif_nr - 1] = 0;  		return;  	} -	if (!in_sdram) -		emif_sizes[emif_nr - 1] = get_emif_mem_size(&dev_details); -  	/*  	 * Get device timings:  	 * - Default timings specified by JESD209-2 if @@ -1108,8 +1111,8 @@ void dmm_init(u32 base)  	mapped_size = 0;  	section_cnt = 3;  	sys_addr = CONFIG_SYS_SDRAM_BASE; -	emif1_size = emif_sizes[0]; -	emif2_size = emif_sizes[1]; +	emif1_size = get_emif_mem_size(EMIF1_BASE); +	emif2_size = get_emif_mem_size(EMIF2_BASE);  	debug("emif1_size 0x%x emif2_size 0x%x\n", emif1_size, emif2_size);  	if (!emif1_size && !emif2_size) |