@ -655,20 +655,27 @@ static u32 get_ddr_phy_ctrl_1(u32 freq, u8 RL)
return phy ;
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 ;
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 )
emif_reset_phy ( base ) ;
return 0 ;
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 ) {
if ( dev_details . cs0_device_details ) {
temp = devices - > cs0_device_details - > density ;
temp = dev_details . cs0_device_details - > density ;
size_mbytes + = lpddr2_density_2_size_in_mbytes [ temp ] ;
size_mbytes + = lpddr2_density_2_size_in_mbytes [ temp ] ;
}
}
if ( devices - > cs1_device_details ) {
if ( dev_details . cs1_device_details ) {
temp = devices - > cs1_device_details - > density ;
temp = dev_details . cs1_device_details - > density ;
size_mbytes + = lpddr2_density_2_size_in_mbytes [ temp ] ;
size_mbytes + = lpddr2_density_2_size_in_mbytes [ temp ] ;
}
}
/* convert to bytes */
/* convert to bytes */
@ -1040,13 +1047,9 @@ static void do_sdram_init(u32 base)
/* Return if no devices on this EMIF */
/* Return if no devices on this EMIF */
if ( ! dev_details . cs0_device_details & &
if ( ! dev_details . cs0_device_details & &
! dev_details . cs1_device_details ) {
! dev_details . cs1_device_details ) {
emif_sizes [ emif_nr - 1 ] = 0 ;
return ;
return ;
}
}
if ( ! in_sdram )
emif_sizes [ emif_nr - 1 ] = get_emif_mem_size ( & dev_details ) ;
/*
/*
* Get device timings :
* Get device timings :
* - Default timings specified by JESD209 - 2 if
* - Default timings specified by JESD209 - 2 if
@ -1108,8 +1111,8 @@ void dmm_init(u32 base)
mapped_size = 0 ;
mapped_size = 0 ;
section_cnt = 3 ;
section_cnt = 3 ;
sys_addr = CONFIG_SYS_SDRAM_BASE ;
sys_addr = CONFIG_SYS_SDRAM_BASE ;
emif1_size = emif_sizes [ 0 ] ;
emif1_size = get_emif_mem_size ( EMIF1_BASE ) ;
emif2_size = emif_sizes [ 1 ] ;
emif2_size = get_emif_mem_size ( EMIF2_BASE ) ;
debug ( " emif1_size 0x%x emif2_size 0x%x \n " , emif1_size , emif2_size ) ;
debug ( " emif1_size 0x%x emif2_size 0x%x \n " , emif1_size , emif2_size ) ;
if ( ! emif1_size & & ! emif2_size )
if ( ! emif1_size & & ! emif2_size )