summaryrefslogtreecommitdiff
path: root/arch/arm/mach-keystone/ddr3_spd.c
diff options
context:
space:
mode:
authorVitaly Andrianov <vitalya@ti.com>2016-03-04 16:36:43 (GMT)
committerTom Rini <trini@konsulko.com>2016-03-14 23:18:45 (GMT)
commit8efc24374176be3047f1585304fd33d5afca4dcb (patch)
treee5d37421dfaaee824a092c8da1a71b70e015b5ca /arch/arm/mach-keystone/ddr3_spd.c
parentd9a76e77c8c99dc6da98aef94e0a241581d1cbe7 (diff)
downloadu-boot-8efc24374176be3047f1585304fd33d5afca4dcb.tar.xz
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>
Diffstat (limited to 'arch/arm/mach-keystone/ddr3_spd.c')
-rw-r--r--arch/arm/mach-keystone/ddr3_spd.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mach-keystone/ddr3_spd.c b/arch/arm/mach-keystone/ddr3_spd.c
index e5018c9..c541886 100644
--- a/arch/arm/mach-keystone/ddr3_spd.c
+++ b/arch/arm/mach-keystone/ddr3_spd.c
@@ -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;