summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/omap4/sdram_elpida.c
diff options
context:
space:
mode:
authorAneesh V <aneesh@ti.com>2011-09-08 11:05:53 -0400
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2011-09-13 08:25:15 +0200
commit025bc4254ba3d501cf2af49ae1d91d5b2e7c529d (patch)
treef82cf7e4e6570d67148f8d63e33370b979e9c277 /arch/arm/cpu/armv7/omap4/sdram_elpida.c
parent16dc702f2419d1bd5b829a60382785c22d9ee50c (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.c24
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 */