|
@@ -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)
|
|
|
|
- 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];
|
|
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];
|
|
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];
|
|
|
|
- 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);
|
|
debug("emif1_size 0x%x emif2_size 0x%x\n", emif1_size, emif2_size);
|
|
|
|
|
|
if (!emif1_size && !emif2_size)
|
|
if (!emif1_size && !emif2_size)
|