]> git.sur5r.net Git - u-boot/commitdiff
ARM: DRA7 / OMAP5: Add workaround for ARM errata 798870
authorPraveen Rao <prao@ti.com>
Mon, 9 Mar 2015 22:12:06 +0000 (17:12 -0500)
committerTom Rini <trini@konsulko.com>
Fri, 13 Mar 2015 13:29:01 +0000 (09:29 -0400)
This patch enables the workaround for ARM errata 798870 for OMAP5 /
DRA7 which says "If back-to-back speculative cache line fills (fill
A and fill B) are issued from the L1 data cache of a CPU to the
L2 cache, the second request (fill B) is then cancelled, and the
second request would have detected a hazard against a recent write or
eviction (write B) to the same cache line as fill B then the L2 logic
might deadlock."

An l2auxctlr accessor implementation for OMAP5 and DRA7 is introduced
here as well.

Signed-off-by: Praveen Rao <prao@ti.com>
Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Tested-by: Matt Porter <mporter@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/cpu/armv7/omap5/hwinit.c
arch/arm/include/asm/arch-omap5/sys_proto.h
include/configs/ti_omap5_common.h

index a8a474a88be94a94fabf2e5d71a47fb50797df37..f8060555b680b4171badccfe1bc77a00daf3bc91 100644 (file)
@@ -381,3 +381,10 @@ void setup_warmreset_time(void)
        rst_val |= rst_time;
        writel(rst_val, (*prcm)->prm_rsttime);
 }
+
+void v7_arch_cp15_set_l2aux_ctrl(u32 l2auxctrl, u32 cpu_midr,
+                                u32 cpu_rev_comb, u32 cpu_variant,
+                                u32 cpu_rev)
+{
+       omap_smc1(OMAP5_SERVICE_L2ACTLR_SET, l2auxctrl);
+}
index 103830319a414d31f10a7d8ad05571111650ae9d..ea84665f5b9767b76be5923a7535d00533b620a1 100644 (file)
@@ -66,4 +66,7 @@ static inline u32 usec_to_32k(u32 usec)
 {
        return div_round_up(32768 * usec, 1000000);
 }
+
+#define OMAP5_SERVICE_L2ACTLR_SET    0x104
+
 #endif
index 925cb42dd38d9a66ecb1bbb94cae5bcb31b2bad6..09f05f18a75dcacdd2f22ce5ede42df6b9bfc78e 100644 (file)
@@ -21,6 +21,9 @@
 #define CONFIG_DISPLAY_BOARDINFO
 #define CONFIG_ARCH_CPU_INIT
 
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_798870
+
 #define CONFIG_SYS_CACHELINE_SIZE      64
 
 /* Use General purpose timer 1 */