ARM: OMAP3: Enable workaround for ARM errata 454179, 430973, 621766
authorNishanth Menon <nm@ti.com>
Mon, 9 Mar 2015 22:12:08 +0000 (17:12 -0500)
committerTom Rini <trini@konsulko.com>
Fri, 13 Mar 2015 13:29:24 +0000 (09:29 -0400)
Enable the OMAP3 specific errata code for 454179, 430973, 621766
and while at it, remove legacy non-revision checked errata logic.

Signed-off-by: Nishanth Menon <nm@ti.com>
Tested-by: Matt Porter <mporter@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
16 files changed:
arch/arm/cpu/armv7/omap3/board.c
include/configs/am3517_crane.h
include/configs/am3517_evm.h
include/configs/cm_t35.h
include/configs/cm_t3517.h
include/configs/dig297.h
include/configs/mcx.h
include/configs/omap3_evm_common.h
include/configs/omap3_logic.h
include/configs/omap3_mvblx.h
include/configs/omap3_pandora.h
include/configs/omap3_sdp3430.h
include/configs/tam3517-common.h
include/configs/tao3530.h
include/configs/ti_omap3_common.h
include/configs/tricorder.h

index 6e6a95762b8d622a8383aec2dfe1286d95ca4719..51a1c5816c3e040705ba405052e14b1cb5e5c6c8 100644 (file)
@@ -35,7 +35,6 @@ DECLARE_GLOBAL_DATA_PTR;
 
 /* Declarations */
 extern omap3_sysinfo sysinfo;
-static void omap3_setup_aux_cr(void);
 #ifndef CONFIG_SYS_L2CACHE_OFF
 static void omap3_invalidate_l2_cache_secure(void);
 #endif
@@ -244,9 +243,6 @@ void s_init(void)
 
        try_unlock_memory();
 
-       /* Errata workarounds */
-       omap3_setup_aux_cr();
-
 #ifndef CONFIG_SYS_L2CACHE_OFF
        /* Invalidate L2-cache from secure mode */
        omap3_invalidate_l2_cache_secure();
@@ -419,15 +415,9 @@ static void omap3_emu_romcode_call(u32 service_id, u32 *parameters)
        do_omap3_emu_romcode_call(service_id, OMAP3_PUBLIC_SRAM_SCRATCH_AREA);
 }
 
-static void omap3_update_aux_cr_secure(u32 set_bits, u32 clear_bits)
+void v7_arch_cp15_set_acr(u32 acr, u32 cpu_midr, u32 cpu_rev_comb,
+                         u32 cpu_variant, u32 cpu_rev)
 {
-       u32 acr;
-
-       /* Read ACR */
-       asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr));
-       acr &= ~clear_bits;
-       acr |= set_bits;
-
        if (get_device_type() == GP_DEVICE) {
                omap_smc1(OMAP3_GP_ROMCODE_API_WRITE_ACR, acr);
        } else {
@@ -439,16 +429,15 @@ static void omap3_update_aux_cr_secure(u32 set_bits, u32 clear_bits)
        }
 }
 
-static void omap3_setup_aux_cr(void)
+static void omap3_update_aux_cr_secure(u32 set_bits, u32 clear_bits)
 {
-       /* Workaround for Cortex-A8 errata: #454179 #430973
-        *      Set "IBE" bit
-        *      Set "Disable Branch Size Mispredicts" bit
-        * Workaround for erratum #621766
-        *      Enable L1NEON bit
-        * ACR |= (IBE | DBSM | L1NEON) => ACR |= 0xE0
-        */
-       omap3_update_aux_cr_secure(0xE0, 0);
+       u32 acr;
+
+       /* Read ACR */
+       asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr));
+       acr &= ~clear_bits;
+       acr |= set_bits;
+       v7_arch_cp15_set_acr(acr, 0, 0, 0, 0);
 }
 
 #ifndef CONFIG_SYS_L2CACHE_OFF
index 87c850e05df19c30e7d361751a50a68274adcdfc..c3c9169d0555b2efc429e599154f68118a39374d 100644 (file)
 #define CONFIG_OMAP            1       /* in a TI OMAP core */
 #define CONFIG_OMAP3_AM3517CRANE       1       /* working with CRANEBOARD */
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_EMIF4   /* The chip has EMIF4 controller */
 
index c4e19e79b95afa6e2866daf9b3d51055e5f3410e..31e758d81bdd70782c32daf7967c6e212b900464 100644 (file)
 #define CONFIG_OMAP            1       /* in a TI OMAP core */
 #define CONFIG_OMAP3_AM3517EVM 1       /* working with AM3517EVM */
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_EMIF4   /* The chip has EMIF4 controller */
 
index e2d5bbb0955d266b952bc05d5e4075c0a2e05149..3eb7886eb69e2c2275241552db0c6fd41715ab7d 100644 (file)
 #define CONFIG_CM_T3X  /* working with CM-T35 and CM-T3730 */
 #define CONFIG_OMAP_COMMON
 #define CONFIG_SYS_GENERIC_BOARD
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SDRC    /* The chip has SDRC controller */
 
index ee1b7a0cb5a763fe32f3a05be5238463c21a3af5..8c6313832250940806cbda5101f99b19c31c2126 100644 (file)
 #define CONFIG_CM_T3517        /* working with CM-T3517 */
 #define CONFIG_OMAP_COMMON
 #define CONFIG_SYS_GENERIC_BOARD
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SYS_TEXT_BASE   0x80008000
 
index 8791199fc61da333ca0cb77643525881077b5dc2..932640112b3a1f41206000dbc3346da41e4dd200 100644 (file)
 #define MACH_TYPE_OMAP3_CPS 2751
 #endif
 #define CONFIG_MACH_TYPE MACH_TYPE_OMAP3_CPS
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 /*
  * High Level Configuration Options
index 2cf66c40d6fee15cf0727fae4217bd0685467302..3fd31842451d7a9b731229488aaeb17fac5c96bf 100644 (file)
 #define CONFIG_OMAP3_MCX               /* working with mcx */
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define MACH_TYPE_MCX                  3656
 #define CONFIG_MACH_TYPE       MACH_TYPE_MCX
index e7df15400d373d17871362a2f3275a14f48426c6..370f21e3ee6dfdd1694602ab790f67c9eb031ac5 100644 (file)
 #define CONFIG_OMAP                    /* This is TI OMAP core */
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SDRC                    /* The chip has SDRC controller */
 
index fcef46735835a44a3f8cd08881770396454a6fa4..13cd35b16a0336e9b91017f950753ea897383dcc 100644 (file)
 #define CONFIG_OMAP3_LOGIC             /* working with Logic OMAP boards */
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SYS_TEXT_BASE   0x80400000
 
index 20ec3ad15439f2564096c628d0c01f922a7f5635..b61297f9ee94efe348436f219a0ff47d1a998478 100644 (file)
 #define CONFIG_MACH_TYPE       MACH_TYPE_MVBLX
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SDRC    /* The chip has SDRC controller */
 
index b92d67abccf904b0e910ab09098b4cc8a4496d42..11d7b86eb10d0e9285ca4ea6ae8e28bcd9a31803 100644 (file)
 #define CONFIG_OMAP3_PANDORA   1       /* working with pandora */
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SDRC    /* The chip has SDRC controller */
 
index bf5c7a8faf779b611a30328b0f9d515d9fc41c6b..1ca79d4ee4ddf3a4ed291901ebadacb6f955b93d 100644 (file)
 #define CONFIG_OMAP            1       /* in a TI OMAP core */
 #define CONFIG_OMAP3_3430SDP   1       /* working with SDP Rev2 */
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SDRC    /* The chip has SDRC controller */
 
index dea4044d9fbb5b5ab19032e4d94748427d19edbe..2d12e86566cd2ecd55776d98ed7aa0201690329e 100644 (file)
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
 #define CONFIG_SYS_GENERIC_BOARD
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_SYS_TEXT_BASE 0x80008000
 
index f3e0088d5a00b6abe724a5d89be42214c57d4821..49ed79ffbc0b8d463c96eba2bd45794bd1f02a6a 100644 (file)
 #define CONFIG_OMAP_GPIO
 #define CONFIG_OMAP_COMMON
 #define CONFIG_SYS_GENERIC_BOARD
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define MACH_TYPE_OMAP3_TAO3530                2836
 
index 4b4f104105433b202b4e06ec50818fee32a1b5a1..429b109afa23e0e87e87d19446546b7c5800abb7 100644 (file)
 # define CONFIG_OMAP_SERIAL
 #endif
 
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
+
 /* The chip has SDRC controller */
 #define CONFIG_SDRC
 
index b105ffd9f18b13e7564f4320d4140c95a3665df7..7426bde8a0c226b4b6e7451acba13e86b0741a7b 100644 (file)
 /* High Level Configuration Options */
 #define CONFIG_OMAP                    /* in a TI OMAP core */
 #define CONFIG_OMAP_COMMON
+/* Common ARM Erratas */
+#define CONFIG_ARM_ERRATA_454179
+#define CONFIG_ARM_ERRATA_430973
+#define CONFIG_ARM_ERRATA_621766
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_TRICORDER
 /*