aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/smp_scu.c
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2009-11-04 07:16:38 -0500
committerCatalin Marinas <catalin.marinas@arm.com>2009-11-05 05:10:36 -0500
commit9b229fa0951fb47cbc178be4bd8e9ef185b38802 (patch)
tree97a517a6c8c7788b799a8350a976c2a0556de144 /arch/arm/kernel/smp_scu.c
parent1b3a02eb452354fa9b36a7f33dc4c8307bbc40aa (diff)
Check whether the SCU was already initialised
If Linux is running in non-secure mode, this register may have been already initialised and writing to the control register not allowed. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/kernel/smp_scu.c')
-rw-r--r--arch/arm/kernel/smp_scu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c
index d3831f616ee9..9ab4149bd983 100644
--- a/arch/arm/kernel/smp_scu.c
+++ b/arch/arm/kernel/smp_scu.c
@@ -37,6 +37,10 @@ void __init scu_enable(void __iomem *scu_base)
37 u32 scu_ctrl; 37 u32 scu_ctrl;
38 38
39 scu_ctrl = __raw_readl(scu_base + SCU_CTRL); 39 scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
40 /* already enabled? */
41 if (scu_ctrl & 1)
42 return;
43
40 scu_ctrl |= 1; 44 scu_ctrl |= 1;
41 __raw_writel(scu_ctrl, scu_base + SCU_CTRL); 45 __raw_writel(scu_ctrl, scu_base + SCU_CTRL);
42 46