diff options
author | ruchika kharwar <ruchika@ti.com> | 2012-02-01 16:19:31 -0600 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:56:21 +0200 |
commit | a1f6101730b8195973581a352308d49adfd6f5d4 (patch) | |
tree | a14285d6c309f870c5808d71eda98d9bd0cb39d8 /arch/arm | |
parent | ab388fd61281d24ab61ba7513aedcc20b98418e2 (diff) | |
download | kernel_samsung_tuna-a1f6101730b8195973581a352308d49adfd6f5d4.zip kernel_samsung_tuna-a1f6101730b8195973581a352308d49adfd6f5d4.tar.gz kernel_samsung_tuna-a1f6101730b8195973581a352308d49adfd6f5d4.tar.bz2 |
OMAP4: ERRATA: ARM: Fix ARM Errata 751472
Errata 751472: This Errata workaround requires bit 11 to be set in the CP15
diagnostic control register. This patch takes care of this errata fix for GP
devices at CPU init time and at the cpu_resume stage.
Change-Id: I3a8d2b825ac59719233275a77c5fbf5175b35bcb
Signed-off-by: Ruchika Kharwar <ruchika@ti.com>
Diffstat (limited to 'arch/arm')
-rwxr-xr-x | arch/arm/mach-omap2/Kconfig | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/include/mach/omap4-common.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/sleep44xx.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-v7.S | 7 |
4 files changed, 22 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index e77328e..ef4e47b 100755 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -412,6 +412,14 @@ config OMAP4_ARM_ERRATA_742230 This is handled for HS devices in the PPA code and does not need to be enabled." +config OMAP4_ARM_ERRATA_751472 + bool "Enables the workaround for ARM errata 751472 on GP devices" + help + Enables the ARM errata 751472 on OMAP443x and OMAP446x (GP) devices. + This involves setting bit 11 of the CP15 diagnostic control register. + This is handled for HS devices in the PPA code and does not need to be + enabled." + endmenu endif diff --git a/arch/arm/mach-omap2/include/mach/omap4-common.h b/arch/arm/mach-omap2/include/mach/omap4-common.h index 594efad..9d884f3 100644 --- a/arch/arm/mach-omap2/include/mach/omap4-common.h +++ b/arch/arm/mach-omap2/include/mach/omap4-common.h @@ -159,6 +159,10 @@ static inline unsigned int omap4_get_diagctrl0_errata_flags(void) if ((arm_rev >= 0x10) && (arm_rev <= 0x22)) ret |= (1 << 4); #endif +#ifdef CONFIG_OMAP4_ARM_ERRATA_751472 + if (arm_rev < 0x30) /* ARM revision less that r3p0 */ + ret |= (1 << 11); +#endif return ret; } diff --git a/arch/arm/mach-omap2/sleep44xx.S b/arch/arm/mach-omap2/sleep44xx.S index b04991f..c67ac9b 100644 --- a/arch/arm/mach-omap2/sleep44xx.S +++ b/arch/arm/mach-omap2/sleep44xx.S @@ -441,6 +441,10 @@ continue_boot: orrle r0, r0, #0x10 @ Set bit 4 ignore_742230: #endif +#ifdef CONFIG_OMAP4_ARM_ERRATA_751472 + cmp r3, #0x30 @ present prior to r3p0 + orrlt r0, r0, #0x800 @ Set bit 11 +#endif cmp r0, #0 beq skip_gp_diagnostic_ctrl_setup mov r12, #HAL_DIAGREG_0 diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index f867de5..ab962dc 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S @@ -355,7 +355,8 @@ __v7_setup: orrlt r10, r10, #1 << 11 @ set bit #11 mcrlt p15, 0, r10, c15, c0, 1 @ write diagnostic register #endif -#if (defined(CONFIG_OMAP4_ARM_ERRATA_742230)) +#if (defined(CONFIG_OMAP4_ARM_ERRATA_742230) || \ + defined(CONFIG_OMAP4_ARM_ERRATA_751472)) stmia r12, {r0-r4} ldr r0, =0x4a0022c4 @ Ctrl module status reg addr ldr r1, [r0] @@ -367,6 +368,10 @@ __v7_setup: cmp r6, #0x22 orrle r0, r0, #1 << 4 @ set bit #4 #endif +#ifdef CONFIG_OMAP4_ARM_ERRATA_751472 + cmp r6, #0x30 @ present prior to r3p0 + orrlt r0, r0, #1 << 11 @ set bit #11 +#endif cmp r0, #0 beq zero_diagctrl0 mov r10, r12 |