diff options
Diffstat (limited to 'arch/arm/kernel/smp_scu.c')
| -rw-r--r-- | arch/arm/kernel/smp_scu.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c index 79ed5e7f204..8f5dd796335 100644 --- a/arch/arm/kernel/smp_scu.c +++ b/arch/arm/kernel/smp_scu.c @@ -13,6 +13,7 @@  #include <asm/smp_scu.h>  #include <asm/cacheflush.h> +#include <asm/cputype.h>  #define SCU_CTRL		0x00  #define SCU_CONFIG		0x04 @@ -33,10 +34,19 @@ unsigned int __init scu_get_core_count(void __iomem *scu_base)  /*   * Enable the SCU   */ -void __init scu_enable(void __iomem *scu_base) +void scu_enable(void __iomem *scu_base)  {  	u32 scu_ctrl; +#ifdef CONFIG_ARM_ERRATA_764369 +	/* Cortex-A9 only */ +	if ((read_cpuid(CPUID_ID) & 0xff0ffff0) == 0x410fc090) { +		scu_ctrl = __raw_readl(scu_base + 0x30); +		if (!(scu_ctrl & 1)) +			__raw_writel(scu_ctrl | 0x1, scu_base + 0x30); +	} +#endif +  	scu_ctrl = __raw_readl(scu_base + SCU_CTRL);  	/* already enabled? */  	if (scu_ctrl & 1)  |