aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorruchika kharwar <ruchika@ti.com>2012-02-01 16:19:31 -0600
committerZiyann <jaraidaniel@gmail.com>2014-10-01 12:56:21 +0200
commita1f6101730b8195973581a352308d49adfd6f5d4 (patch)
treea14285d6c309f870c5808d71eda98d9bd0cb39d8 /arch/arm
parentab388fd61281d24ab61ba7513aedcc20b98418e2 (diff)
downloadkernel_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-xarch/arm/mach-omap2/Kconfig8
-rw-r--r--arch/arm/mach-omap2/include/mach/omap4-common.h4
-rw-r--r--arch/arm/mach-omap2/sleep44xx.S4
-rw-r--r--arch/arm/mm/proc-v7.S7
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