diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap-smp.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap-smp.c | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c index 8708b2a9da4..256e84ef0f6 100644 --- a/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c @@ -1,5 +1,5 @@  /* - * OMAP4 SMP source file. It contains platform specific fucntions + * OMAP4 SMP source file. It contains platform specific functions   * needed for the linux smp kernel.   *   * Copyright (C) 2009 Texas Instruments, Inc. @@ -39,8 +39,6 @@  #define OMAP5_CORE_COUNT	0x2 -u16 pm44xx_errata; -  /* SCU base address */  static void __iomem *scu_base; @@ -66,6 +64,13 @@ static void omap4_secondary_init(unsigned int cpu)  							4, 0, 0, 0, 0, 0);  	/* +	 * Configure the CNTFRQ register for the secondary cpu's which +	 * indicates the frequency of the cpu local timers. +	 */ +	if (soc_is_omap54xx() || soc_is_dra7xx()) +		set_cntfreq(); + +	/*  	 * Synchronise with the boot thread.  	 */  	spin_lock(&boot_lock); @@ -94,7 +99,7 @@ static int omap4_boot_secondary(unsigned int cpu, struct task_struct *idle)  	if (omap_secure_apis_support())  		omap_modify_auxcoreboot0(0x200, 0xfffffdff);  	else -		__raw_writel(0x20, base + OMAP_AUX_CORE_BOOT_0); +		writel_relaxed(0x20, base + OMAP_AUX_CORE_BOOT_0);  	if (!cpu1_clkdm && !cpu1_pwrdm) {  		cpu1_clkdm = clkdm_lookup("mpu1_clkdm"); @@ -210,10 +215,8 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)  	if (scu_base)  		scu_enable(scu_base); -	if (cpu_is_omap446x()) { +	if (cpu_is_omap446x())  		startup_addr = omap4460_secondary_startup; -		pm44xx_errata |= PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD; -	}  	/*  	 * Write the address of secondary startup routine into the @@ -224,8 +227,8 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)  	if (omap_secure_apis_support())  		omap_auxcoreboot_addr(virt_to_phys(startup_addr));  	else -		__raw_writel(virt_to_phys(omap5_secondary_startup), -						base + OMAP_AUX_CORE_BOOT_1); +		writel_relaxed(virt_to_phys(omap5_secondary_startup), +			       base + OMAP_AUX_CORE_BOOT_1);  }  | 
