mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-25 06:46:00 +00:00
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: Vitaly Andrianov <vitalya@ti.com> Signed-off-by: Nishanth Menon <nm@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
d9a76e77c8
commit
8efc243741
4 changed files with 19 additions and 3 deletions
|
@ -426,6 +426,16 @@ static int ddr3_read_spd(ddr3_spd_eeprom_t *spd_params)
|
||||||
return 0;
|
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)
|
int ddr3_get_dimm_params_from_spd(struct ddr3_spd_cb *spd_cb)
|
||||||
{
|
{
|
||||||
struct ddr3_sodimm spd;
|
struct ddr3_sodimm spd;
|
||||||
|
|
|
@ -66,5 +66,6 @@ void ddr3_err_reset_workaround(void);
|
||||||
void ddr3_enable_ecc(u32 base, int test);
|
void ddr3_enable_ecc(u32 base, int test);
|
||||||
void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
|
void ddr3_init_ddrphy(u32 base, struct ddr3_phy_config *phy_cfg);
|
||||||
void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
|
void ddr3_init_ddremif(u32 base, struct ddr3_emif_config *emif_cfg);
|
||||||
|
int ddr3_get_size(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,4 +105,11 @@
|
||||||
/* NETCP */
|
/* NETCP */
|
||||||
#define KS2_NETCP_BASE 0x26000000
|
#define KS2_NETCP_BASE 0x26000000
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
static inline int ddr3_get_size(void)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ASM_ARCH_HARDWARE_K2L_H */
|
#endif /* __ASM_ARCH_HARDWARE_K2L_H */
|
||||||
|
|
|
@ -146,9 +146,7 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||||
|
|
||||||
ddr3a_size = 0;
|
ddr3a_size = 0;
|
||||||
if (lpae) {
|
if (lpae) {
|
||||||
env = getenv("ddr3a_size");
|
ddr3a_size = ddr3_get_size();
|
||||||
if (env)
|
|
||||||
ddr3a_size = simple_strtol(env, NULL, 10);
|
|
||||||
if ((ddr3a_size != 8) && (ddr3a_size != 4))
|
if ((ddr3a_size != 8) && (ddr3a_size != 4))
|
||||||
ddr3a_size = 0;
|
ddr3a_size = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue