summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorLucas Stach <dev@lynxeye.de>2015-06-24 21:13:49 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-06-29 06:48:58 +0200
commitaf5f49c2ae29dbd737ae3014dea79ba9b2bd2b17 (patch)
tree8eaa791fe4134e0b5420e35a08e81156702823bd /arch/arm/mach-tegra
parentdc3dfc7286b3b711d5c10e5ecfcb282d169e7663 (diff)
downloadbarebox-af5f49c2ae29dbd737ae3014dea79ba9b2bd2b17.tar.gz
barebox-af5f49c2ae29dbd737ae3014dea79ba9b2bd2b17.tar.xz
ARM: tegra: jump to maincluster earlier
There is no point in repeating the board setup on the main cluster. It is done either in the AVP startup path or from a first stage loader. Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/include/mach/lowlevel.h15
-rw-r--r--arch/arm/mach-tegra/tegra_avp_init.c3
2 files changed, 9 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/include/mach/lowlevel.h b/arch/arm/mach-tegra/include/mach/lowlevel.h
index 768b13d968..0c76b8883c 100644
--- a/arch/arm/mach-tegra/include/mach/lowlevel.h
+++ b/arch/arm/mach-tegra/include/mach/lowlevel.h
@@ -243,11 +243,20 @@ void tegra_ll_delay_usec(int delay)
while ((int)readl(TEGRA_TMRUS_BASE + TIMER_CNTR_1US) - timeout < 0);
}
+/* reset vector for the AVP, to be called from board reset vector */
+void tegra_avp_reset_vector(uint32_t boarddata);
+
+/* reset vector for the main CPU complex */
+void tegra_maincomplex_entry(void);
+
static __always_inline
void tegra_cpu_lowlevel_setup(void)
{
uint32_t r;
+ if (tegra_cpu_is_maincomplex())
+ tegra_maincomplex_entry();
+
/* set the cpu to SVC32 mode */
__asm__ __volatile__("mrs %0, cpsr":"=r"(r));
r &= ~0x1f;
@@ -258,10 +267,4 @@ void tegra_cpu_lowlevel_setup(void)
tegra_ll_delay_setup();
}
-/* reset vector for the AVP, to be called from board reset vector */
-void tegra_avp_reset_vector(uint32_t boarddata);
-
-/* reset vector for the main CPU complex */
-void tegra_maincomplex_entry(void);
-
#endif /* __TEGRA_LOWLEVEL_H */
diff --git a/arch/arm/mach-tegra/tegra_avp_init.c b/arch/arm/mach-tegra/tegra_avp_init.c
index 91fd894dca..20fcf3f1d1 100644
--- a/arch/arm/mach-tegra/tegra_avp_init.c
+++ b/arch/arm/mach-tegra/tegra_avp_init.c
@@ -265,9 +265,6 @@ void tegra_avp_reset_vector(uint32_t boarddata)
/* put boarddata in scratch reg, for main CPU to fetch after startup */
writel(boarddata, TEGRA_PMC_BASE + PMC_SCRATCH(10));
- if (tegra_cpu_is_maincomplex())
- tegra_maincomplex_entry();
-
/* we want to bring up the high performance CPU complex */
if (tegra_get_chiptype() >= TEGRA30)
tegra_cluster_switch_hp();