diff options
author | Aneesh V <aneesh@ti.com> | 2011-09-08 11:05:53 -0400 |
---|---|---|
committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2011-09-13 08:25:15 +0200 |
commit | 025bc4254ba3d501cf2af49ae1d91d5b2e7c529d (patch) | |
tree | f82cf7e4e6570d67148f8d63e33370b979e9c277 /arch/arm/cpu/armv7/omap4/sdram_elpida.c | |
parent | 16dc702f2419d1bd5b829a60382785c22d9ee50c (diff) |
omap4: make SDRAM init work for ES1.0 silicon
SDRAM init was not working on ES1.0 due to a programming
error. A pointer that was passed by value to a function
was set in function emif_get_device_details(), but the effect
wouldn't be seen in the calling function. The issue came
out while testing for ES1.0 because ES1.0 doesn't have any
SDRAM chips connected to CS1
Signed-off-by: Aneesh V <aneesh@ti.com>
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
Diffstat (limited to 'arch/arm/cpu/armv7/omap4/sdram_elpida.c')
-rw-r--r-- | arch/arm/cpu/armv7/omap4/sdram_elpida.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/arch/arm/cpu/armv7/omap4/sdram_elpida.c b/arch/arm/cpu/armv7/omap4/sdram_elpida.c index 7757aad2ba..edc5326c38 100644 --- a/arch/arm/cpu/armv7/omap4/sdram_elpida.c +++ b/arch/arm/cpu/armv7/omap4/sdram_elpida.c @@ -141,24 +141,24 @@ static const struct lpddr2_device_details elpida_2G_S4_details = { .manufacturer = LPDDR2_MANUFACTURER_ELPIDA }; -static void emif_get_device_details_sdp(u32 emif_nr, - struct lpddr2_device_details *cs0_device_details, - struct lpddr2_device_details *cs1_device_details) +struct lpddr2_device_details *emif_get_device_details_sdp(u32 emif_nr, u8 cs, + struct lpddr2_device_details *lpddr2_dev_details) { u32 omap_rev = omap_revision(); /* EMIF1 & EMIF2 have identical configuration */ - *cs0_device_details = elpida_2G_S4_details; - - if (omap_rev == OMAP4430_ES1_0) - cs1_device_details = NULL; - else - *cs1_device_details = elpida_2G_S4_details; + if ((omap_rev == OMAP4430_ES1_0) && (cs == CS1)) { + /* Nothing connected on CS1 for ES1.0 */ + return NULL; + } else { + /* In all other cases Elpida 2G device */ + *lpddr2_dev_details = elpida_2G_S4_details; + return lpddr2_dev_details; + } } -void emif_get_device_details(u32 emif_nr, - struct lpddr2_device_details *cs0_device_details, - struct lpddr2_device_details *cs1_device_details) +struct lpddr2_device_details *emif_get_device_details(u32 emif_nr, u8 cs, + struct lpddr2_device_details *lpddr2_dev_details) __attribute__((weak, alias("emif_get_device_details_sdp"))); #endif /* CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS */ |