Skip to content
Snippets Groups Projects
Commit 8efc2437 authored by Vitaly Andrianov's avatar Vitaly Andrianov Committed by Tom Rini
Browse files

ARM: keystone2: use detected ddr3a size


Because KS2 u-boot works in 32 bit address space the existing ram_size
global data field cannot be used. The maximum, which the get_ram_size()
can detect is 2GB only. The ft_board_setup() needs the actual ddr3 size
to fix up dtb.

This commit introduces the ddr3_get_size() which uses SPD data to
calculate the ddr3 size. This function replaces the "ddr3_size"
environment variable, which was used to get the SODIMM size.

For platforms, which don't have SODIMM with SPD and ddr3 is populated to
a board a simple ddr3_get_size function that returns ddr3 size has to be
implemented. See hardware-k2l.h

Signed-off-by: default avatarVitaly Andrianov <vitalya@ti.com>
Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Reviewed-by: default avatarTom Rini <trini@konsulko.com>
parent d9a76e77
No related branches found
No related tags found
No related merge requests found
......@@ -426,6 +426,16 @@ static int ddr3_read_spd(ddr3_spd_eeprom_t *spd_params)
return 0;
}
int ddr3_get_size(void)
{
ddr3_spd_eeprom_t spd_params;
if (ddr3_read_spd(&spd_params))
return 0;
return ddr3_get_size_in_mb(&spd_params) / 1024;
}
int ddr3_get_dimm_params_from_spd(struct ddr3_spd_cb *spd_cb)
{
struct ddr3_sodimm spd;
......
......@@ -66,5 +66,6 @@ void ddr3_err_reset_workaround(void);
void ddr3_enable_ecc(u32 base, int test);
void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
int ddr3_get_size(void);
#endif
......@@ -105,4 +105,11 @@
/* NETCP */
#define KS2_NETCP_BASE 0x26000000
#ifndef __ASSEMBLY__
static inline int ddr3_get_size(void)
{
return 2;
}
#endif
#endif /* __ASM_ARCH_HARDWARE_K2L_H */
......@@ -146,9 +146,7 @@ int ft_board_setup(void *blob, bd_t *bd)
ddr3a_size = 0;
if (lpae) {
env = getenv("ddr3a_size");
if (env)
ddr3a_size = simple_strtol(env, NULL, 10);
ddr3a_size = ddr3_get_size();
if ((ddr3a_size != 8) && (ddr3a_size != 4))
ddr3a_size = 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment