提交 c6f90e14 编写于 作者: N Nishanth Menon 提交者: Tom Rini

ARM: OMAP3: Enable workaround for ARM errata 454179, 430973, 621766

Enable the OMAP3 specific errata code for 454179, 430973, 621766
and while at it, remove legacy non-revision checked errata logic.
Signed-off-by: NNishanth Menon <nm@ti.com>
Tested-by: NMatt Porter <mporter@konsulko.com>
Reviewed-by: NTom Rini <trini@konsulko.com>
上级 fc7368ec
...@@ -35,7 +35,6 @@ DECLARE_GLOBAL_DATA_PTR; ...@@ -35,7 +35,6 @@ DECLARE_GLOBAL_DATA_PTR;
/* Declarations */ /* Declarations */
extern omap3_sysinfo sysinfo; extern omap3_sysinfo sysinfo;
static void omap3_setup_aux_cr(void);
#ifndef CONFIG_SYS_L2CACHE_OFF #ifndef CONFIG_SYS_L2CACHE_OFF
static void omap3_invalidate_l2_cache_secure(void); static void omap3_invalidate_l2_cache_secure(void);
#endif #endif
...@@ -244,9 +243,6 @@ void s_init(void) ...@@ -244,9 +243,6 @@ void s_init(void)
try_unlock_memory(); try_unlock_memory();
/* Errata workarounds */
omap3_setup_aux_cr();
#ifndef CONFIG_SYS_L2CACHE_OFF #ifndef CONFIG_SYS_L2CACHE_OFF
/* Invalidate L2-cache from secure mode */ /* Invalidate L2-cache from secure mode */
omap3_invalidate_l2_cache_secure(); omap3_invalidate_l2_cache_secure();
...@@ -419,15 +415,9 @@ static void omap3_emu_romcode_call(u32 service_id, u32 *parameters) ...@@ -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); 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) { if (get_device_type() == GP_DEVICE) {
omap_smc1(OMAP3_GP_ROMCODE_API_WRITE_ACR, acr); omap_smc1(OMAP3_GP_ROMCODE_API_WRITE_ACR, acr);
} else { } else {
...@@ -439,16 +429,15 @@ static void omap3_update_aux_cr_secure(u32 set_bits, u32 clear_bits) ...@@ -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 u32 acr;
* Set "IBE" bit
* Set "Disable Branch Size Mispredicts" bit /* Read ACR */
* Workaround for erratum #621766 asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr));
* Enable L1NEON bit acr &= ~clear_bits;
* ACR |= (IBE | DBSM | L1NEON) => ACR |= 0xE0 acr |= set_bits;
*/ v7_arch_cp15_set_acr(acr, 0, 0, 0, 0);
omap3_update_aux_cr_secure(0xE0, 0);
} }
#ifndef CONFIG_SYS_L2CACHE_OFF #ifndef CONFIG_SYS_L2CACHE_OFF
......
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
#define CONFIG_OMAP 1 /* in a TI OMAP core */ #define CONFIG_OMAP 1 /* in a TI OMAP core */
#define CONFIG_OMAP3_AM3517CRANE 1 /* working with CRANEBOARD */ #define CONFIG_OMAP3_AM3517CRANE 1 /* working with CRANEBOARD */
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_EMIF4 /* The chip has EMIF4 controller */
......
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
#define CONFIG_OMAP 1 /* in a TI OMAP core */ #define CONFIG_OMAP 1 /* in a TI OMAP core */
#define CONFIG_OMAP3_AM3517EVM 1 /* working with AM3517EVM */ #define CONFIG_OMAP3_AM3517EVM 1 /* working with AM3517EVM */
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_EMIF4 /* The chip has EMIF4 controller */
......
...@@ -26,6 +26,10 @@ ...@@ -26,6 +26,10 @@
#define CONFIG_CM_T3X /* working with CM-T35 and CM-T3730 */ #define CONFIG_CM_T3X /* working with CM-T35 and CM-T3730 */
#define CONFIG_OMAP_COMMON #define CONFIG_OMAP_COMMON
#define CONFIG_SYS_GENERIC_BOARD #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 */ #define CONFIG_SDRC /* The chip has SDRC controller */
......
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
#define CONFIG_CM_T3517 /* working with CM-T3517 */ #define CONFIG_CM_T3517 /* working with CM-T3517 */
#define CONFIG_OMAP_COMMON #define CONFIG_OMAP_COMMON
#define CONFIG_SYS_GENERIC_BOARD #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 #define CONFIG_SYS_TEXT_BASE 0x80008000
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
#define MACH_TYPE_OMAP3_CPS 2751 #define MACH_TYPE_OMAP3_CPS 2751
#endif #endif
#define CONFIG_MACH_TYPE MACH_TYPE_OMAP3_CPS #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 * High Level Configuration Options
......
...@@ -16,6 +16,10 @@ ...@@ -16,6 +16,10 @@
#define CONFIG_OMAP3_MCX /* working with mcx */ #define CONFIG_OMAP3_MCX /* working with mcx */
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #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 MACH_TYPE_MCX 3656
#define CONFIG_MACH_TYPE MACH_TYPE_MCX #define CONFIG_MACH_TYPE MACH_TYPE_MCX
......
...@@ -15,6 +15,10 @@ ...@@ -15,6 +15,10 @@
#define CONFIG_OMAP /* This is TI OMAP core */ #define CONFIG_OMAP /* This is TI OMAP core */
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_SDRC /* The chip has SDRC controller */
......
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
#define CONFIG_OMAP3_LOGIC /* working with Logic OMAP boards */ #define CONFIG_OMAP3_LOGIC /* working with Logic OMAP boards */
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #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 #define CONFIG_SYS_TEXT_BASE 0x80400000
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
#define CONFIG_MACH_TYPE MACH_TYPE_MVBLX #define CONFIG_MACH_TYPE MACH_TYPE_MVBLX
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_SDRC /* The chip has SDRC controller */
......
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
#define CONFIG_OMAP3_PANDORA 1 /* working with pandora */ #define CONFIG_OMAP3_PANDORA 1 /* working with pandora */
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_SDRC /* The chip has SDRC controller */
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
#define CONFIG_OMAP 1 /* in a TI OMAP core */ #define CONFIG_OMAP 1 /* in a TI OMAP core */
#define CONFIG_OMAP3_3430SDP 1 /* working with SDP Rev2 */ #define CONFIG_OMAP3_3430SDP 1 /* working with SDP Rev2 */
#define CONFIG_OMAP_COMMON #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 */ #define CONFIG_SDRC /* The chip has SDRC controller */
......
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #define CONFIG_OMAP_COMMON
#define CONFIG_SYS_GENERIC_BOARD #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 #define CONFIG_SYS_TEXT_BASE 0x80008000
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
#define CONFIG_OMAP_COMMON #define CONFIG_OMAP_COMMON
#define CONFIG_SYS_GENERIC_BOARD #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 #define MACH_TYPE_OMAP3_TAO3530 2836
......
...@@ -22,6 +22,11 @@ ...@@ -22,6 +22,11 @@
# define CONFIG_OMAP_SERIAL # define CONFIG_OMAP_SERIAL
#endif #endif
/* Common ARM Erratas */
#define CONFIG_ARM_ERRATA_454179
#define CONFIG_ARM_ERRATA_430973
#define CONFIG_ARM_ERRATA_621766
/* The chip has SDRC controller */ /* The chip has SDRC controller */
#define CONFIG_SDRC #define CONFIG_SDRC
......
...@@ -19,6 +19,10 @@ ...@@ -19,6 +19,10 @@
/* High Level Configuration Options */ /* High Level Configuration Options */
#define CONFIG_OMAP /* in a TI OMAP core */ #define CONFIG_OMAP /* in a TI OMAP core */
#define CONFIG_OMAP_COMMON #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 #define CONFIG_MACH_TYPE MACH_TYPE_TRICORDER
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册