ARM: OMAP: Fix handling of errata i727
authorRajendra Nayak <rnayak@ti.com>
Fri, 18 Jul 2014 05:48:48 +0000 (11:18 +0530)
committerTom Rini <trini@ti.com>
Fri, 25 Jul 2014 20:26:11 +0000 (16:26 -0400)
The errata is applicable on all OMAP4 (4430 and 4460/4470) and OMAP5
ES 1.0 devices. The current revision check erroneously implements this
on all DRA7 varients and with DRA722 device (which has only 1 EMIF instance)
infact causes an asynchronous abort and ends up masking it in CPSR,
only to be uncovered once the kernel switches to userspace.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Sricharan R <r.sricharan@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/cpu/armv7/omap-common/hwinit-common.c
arch/arm/include/asm/omap_common.h

index 5f50a1980157d646b1308bf8d98b529009d40d1e..1b4477f4690020837c55b162684a74c8fd3eb795 100644 (file)
@@ -123,7 +123,8 @@ void s_init(void)
        hw_data_init();
 
 #ifdef CONFIG_SPL_BUILD
-       if (warm_reset() && (omap_revision() <= OMAP5430_ES1_0))
+       if (warm_reset() &&
+           (is_omap44xx() || (omap_revision() == OMAP5430_ES1_0)))
                force_emif_self_refresh();
 #endif
        watchdog_init();
index d1344ee94c337847434556b83260704a811730f5..183823404d52099561d768fbaa32594edd9583a8 100644 (file)
@@ -595,6 +595,14 @@ static inline u32 omap_revision(void)
        return *omap_si_rev;
 }
 
+#define OMAP44xx       0x44000000
+
+static inline u8 is_omap44xx(void)
+{
+       extern u32 *const omap_si_rev;
+       return (*omap_si_rev & 0xFF000000) == OMAP44xx;
+};
+
 #define OMAP54xx       0x54000000
 
 static inline u8 is_omap54xx(void)