From: Hai Pham <hai.pham.ud@renesas.com>
Date: Mon, 27 Feb 2023 23:02:18 +0000 (+0100)
Subject: ARM: renesas: falcon: Initialize ARM generic timer and GICv3 if EL3
X-Git-Tag: v2025.01-rc5-pxa1908~1023^2~27^2~14
X-Git-Url: http://git.dujemihanovic.xyz/%22mailto:Murray.Jensen%40csiro.au/static/%7B%7B%20%28.OutputFormats.Get?a=commitdiff_plain;h=72eb1f5e19320ea4919f62341ce077a521d9c278;p=u-boot.git

ARM: renesas: falcon: Initialize ARM generic timer and GICv3 if EL3

U-Boot executes at EL3 is required to initalize those settings.
In other cases, they will be done by prior-stage firmware instead.

This fixes crash when U-Boot is at non-secure exception level.

Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---

diff --git a/board/renesas/falcon/falcon.c b/board/renesas/falcon/falcon.c
index b0cb4e747b..b7e7fd9003 100644
--- a/board/renesas/falcon/falcon.c
+++ b/board/renesas/falcon/falcon.c
@@ -14,6 +14,7 @@
 #include <asm/mach-types.h>
 #include <asm/processor.h>
 #include <linux/errno.h>
+#include <asm/system.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -69,7 +70,8 @@ static void init_gic_v3(void)
 
 void s_init(void)
 {
-	init_generic_timer();
+	if (current_el() == 3)
+		init_generic_timer();
 }
 
 int board_early_init_f(void)
@@ -86,7 +88,8 @@ int board_init(void)
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_TEXT_BASE + 0x50000;
 
-	init_gic_v3();
+	if (current_el() == 3)
+		init_gic_v3();
 
 	return 0;
 }