diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-11-04 07:16:38 -0500 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2009-11-05 05:10:36 -0500 |
commit | 9b229fa0951fb47cbc178be4bd8e9ef185b38802 (patch) | |
tree | 97a517a6c8c7788b799a8350a976c2a0556de144 | |
parent | 1b3a02eb452354fa9b36a7f33dc4c8307bbc40aa (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>
-rw-r--r-- | arch/arm/kernel/smp_scu.c | 4 |
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 | ||