arm: exynos7420: remove custome low level init function
authorThomas Abraham <thomas.ab@samsung.com>
Wed, 16 Nov 2016 13:19:16 +0000 (18:49 +0530)
committerYork Sun <york.sun@nxp.com>
Tue, 22 Nov 2016 19:40:24 +0000 (11:40 -0800)
Remove the custom low-level initialization function and reuse the
default low-level initialization function. But this requires the
ARMV8_MULTIENTRY config option to be enabled for Exynos7420.

On Exynos7420, the boot CPU belongs to the second cluster and so
with ARMV8_MULTIENTRY config option enabled, the 'branch_if_master'
macro fails to detect the CPU as boot CPU. As a temporary workaround
the CPU_RELEASE_ADDR is set to point to '_main'.

Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Alison Wang <alison.wang@nxp.com>
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
Reviewed-by: Alison Wang <alison.wang@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/soc.c
include/configs/exynos7420-common.h

index ce2a16f95b029ff3b1b08afc2a43074de5045a21..07118fc3df3023cb752a6d04be87bd7556e692ea 100644 (file)
@@ -126,6 +126,7 @@ choice
 config  TARGET_ESPRESSO7420
        bool "ESPRESSO7420 board"
        select ARM64
+       select ARMV8_MULTIENTRY
        select SUPPORT_SPL
        select OF_CONTROL
        select SPL_DISABLE_OF_CONTROL
index f9c746861199eae76be4f7bd8914841c2aa151b1..cf149ad1a8cf05e3d3c7f69c666291958a6afc21 100644 (file)
@@ -9,6 +9,16 @@
 #include <asm/io.h>
 #include <asm/system.h>
 
+#ifdef CONFIG_TARGET_ESPRESSO7420
+/*
+ * Exynos7420 uses CPU0 of Cluster-1 as boot CPU. Due to this, branch_if_master
+ * fails to identify as the boot CPU as the master CPU. As temporary workaround,
+ * setup the slave CPU boot address as "_main".
+ */
+extern void _main(void);
+void *secondary_boot_addr = (void *)_main;
+#endif /* CONFIG_TARGET_ESPRESSO7420 */
+
 void reset_cpu(ulong addr)
 {
 #ifdef CONFIG_CPU_V7
@@ -23,11 +33,3 @@ void enable_caches(void)
        dcache_enable();
 }
 #endif
-
-#ifdef CONFIG_ARM64
-void lowlevel_init(void)
-{
-       armv8_switch_to_el2();
-       armv8_switch_to_el1();
-}
-#endif
index f7c47094ae67cff9ed392fb382bd634058d53bae..1cea74e9542cd2667be3fce2a4589bf6de78d5d9 100644 (file)
@@ -47,6 +47,7 @@
 #define CONFIG_IRAM_BASE               0x02100000
 #define CONFIG_IRAM_SIZE               0x58000
 #define CONFIG_IRAM_END                        (CONFIG_IRAM_BASE + CONFIG_IRAM_SIZE)
+#define CPU_RELEASE_ADDR               secondary_boot_addr
 
 /* Number of CPUs available */
 #define CONFIG_CORE_COUNT              0x8