diff mbox

[U-Boot,2/4] arm: mvebu: Update CBAR with SOC regs base

Message ID 1431470510-12886-3-git-send-email-kevin.smith@elecsyscorp.com
State Superseded
Delegated to: Prafulla Wadaskar
Headers show

Commit Message

Kevin Smith May 12, 2015, 10:42 p.m. UTC
SMP-enabled Linux kernels read the CBAR register in CP15 to find
the address of the SCU registers.  After remapping internal
registers, also update the CBAR so the kernel can find them.

Signed-off-by: Kevin Smith <kevin.smith@elecsyscorp.com>
---
 arch/arm/mach-mvebu/cpu.c | 7 +++++++
 1 file changed, 7 insertions(+)
diff mbox

Patch

diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c
index 417fc35..2ac5349 100644
--- a/arch/arm/mach-mvebu/cpu.c
+++ b/arch/arm/mach-mvebu/cpu.c
@@ -161,10 +161,17 @@  static void update_sdram_window_sizes(void)
 }
 
 #ifdef CONFIG_ARCH_CPU_INIT
+static void set_cbar (u32 addr)
+{
+    asm ("mcr p15, 4, %0, c15, c0" : : "r" (addr));
+}
+
+
 int arch_cpu_init(void)
 {
 	/* Linux expects the internal registers to be at 0xf1000000 */
 	writel(SOC_REGS_PHY_BASE, INTREG_BASE_ADDR_REG);
+	set_cbar (SOC_REGS_PHY_BASE);
 
 	/*
 	 * We need to call mvebu_mbus_probe() before calling