]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm/kernel/smp_scu.c
ARM: 7091/1: errata: D-cache line maintenance operation by MVA may not succeed
[karo-tx-linux.git] / arch / arm / kernel / smp_scu.c
index a1e757c3439bcb8155f5f93f940788854fd364d0..cb7dd40e0d3b29ed580c827b9f4c85b40ed64101 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <asm/smp_scu.h>
 #include <asm/cacheflush.h>
+#include <asm/cputype.h>
 
 #define SCU_CTRL               0x00
 #define SCU_CONFIG             0x04
@@ -36,6 +37,15 @@ void __init scu_enable(void __iomem *scu_base)
 {
        u32 scu_ctrl;
 
+#ifdef CONFIG_ARM_ERRATA_764369
+       /* Cortex-A9 only */
+       if ((read_cpuid(CPUID_ID) & 0xff0ffff0) == 0x410fc090) {
+               scu_ctrl = __raw_readl(scu_base + 0x30);
+               if (!(scu_ctrl & 1))
+                       __raw_writel(scu_ctrl | 0x1, scu_base + 0x30);
+       }
+#endif
+
        scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
        /* already enabled? */
        if (scu_ctrl & 1)