[PATCH] arm64: renesas: Add Cortex-M33 build option to R-Car Gen5

Marek Vasut marek.vasut+renesas at mailbox.org
Mon Mar 30 01:23:55 CEST 2026


The R-Car Gen5 SoCs contains Cortex-M33, Cortex-R52 and Cortex-A720AE
cores. Add U-Boot build options for the Cortex-M33 core.

Since the Cortex-M33 core is a 32bit core, select V8M and ARM64 for
RCAR64 accordingly. Select TMU timer on the 32bit core, where it is
used instead of the ARMv8 timer. Adjust TMU timer base address to match
the address map of the Cortex-M33 core. Disable unused OF_BOARD_SETUP
as well as unavailable POSITION_INDEPENDENT configuration options.

Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
---
Cc: Anshul Dalal <anshuld at ti.com>
Cc: Hai Pham <hai.pham.ud at renesas.com>
Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
Cc: Jesse Taube <mr.bossman075 at gmail.com>
Cc: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
Cc: Paul Barker <paul.barker.ct at bp.renesas.com>
Cc: Quentin Schulz <quentin.schulz at cherry.de>
Cc: Tien Fong Chee <tien.fong.chee at altera.com>
Cc: Tom Rini <trini at konsulko.com>
Cc: Udit Kumar <u-kumar1 at ti.com>
Cc: u-boot at lists.denx.de
---
 Kconfig                                             |  2 ++
 arch/arm/mach-renesas/Kconfig                       | 11 ++++++++---
 arch/arm/mach-renesas/Kconfig.rcar5                 |  7 +++++++
 arch/arm/mach-renesas/include/mach/rcar-gen5-base.h |  6 ++++++
 include/configs/rcar-gen5-common.h                  |  6 ++++++
 5 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/Kconfig b/Kconfig
index 0bbdc0cbea6..7033a255675 100644
--- a/Kconfig
+++ b/Kconfig
@@ -476,6 +476,7 @@ config SKIP_RELOCATE
 
 config SKIP_RELOCATE_CODE
 	bool
+	default y if RCAR_64_CM
 	help
 	  Skips relocation of U-Boot code to the end of RAM, but still does
 	  relocate data to the end of RAM. This is mainly meant to relocate
@@ -485,6 +486,7 @@ config SKIP_RELOCATE_CODE
 
 config SKIP_RELOCATE_CODE_DATA_OFFSET
 	hex
+	default 0xa0000000 if RCAR_64_CM
 	default 0x0
 	depends on SKIP_RELOCATE_CODE
 	help
diff --git a/arch/arm/mach-renesas/Kconfig b/arch/arm/mach-renesas/Kconfig
index fa4e312a4dd..3f21755a226 100644
--- a/arch/arm/mach-renesas/Kconfig
+++ b/arch/arm/mach-renesas/Kconfig
@@ -1,15 +1,20 @@
 if ARCH_RENESAS
 
+config TMU_TIMER
+	bool
+
 # Renesas ARM SoCs R-Car Gen3/Gen4 (64bit)
 config RCAR_64
 	bool
-	select ARM64
+	select CPU_V8M if RCAR_64_CM
+	select ARM64 if !RCAR_64_CM
+	select TMU_TIMER if RCAR_64_CM
 	select CMD_CACHE
-	select OF_BOARD_SETUP
+	select OF_BOARD_SETUP if !RCAR_64_CM
 	select PHY
 	select PINCONF
 	select PINCTRL
-	select POSITION_INDEPENDENT
+	select POSITION_INDEPENDENT if !RCAR_64_CM
 	imply CMD_FS_UUID
 	imply CMD_GPT
 	imply CMD_MMC_SWRITE if MMC
diff --git a/arch/arm/mach-renesas/Kconfig.rcar5 b/arch/arm/mach-renesas/Kconfig.rcar5
index 528fc5aecc9..2e6d119a328 100644
--- a/arch/arm/mach-renesas/Kconfig.rcar5
+++ b/arch/arm/mach-renesas/Kconfig.rcar5
@@ -1,5 +1,12 @@
 if RCAR_GEN5
 
+config RCAR_64_CM
+	bool "Renesas ARM SoCs R-Car Gen5 (use Cortex-M33)"
+	default n
+	help
+	  Build U-Boot for the Cortex-M33 core present on selected SoC.
+	  The default is n, meaning U-Boot is built for the Cortex-A core.
+
 menu "Select Target SoC"
 
 config R8A78000
diff --git a/arch/arm/mach-renesas/include/mach/rcar-gen5-base.h b/arch/arm/mach-renesas/include/mach/rcar-gen5-base.h
index f9af3ef885a..4cb9a1fbc42 100644
--- a/arch/arm/mach-renesas/include/mach/rcar-gen5-base.h
+++ b/arch/arm/mach-renesas/include/mach/rcar-gen5-base.h
@@ -9,7 +9,13 @@
 /*
  * R-Car (R8A78000) I/O Addresses
  */
+#if defined(CONFIG_RCAR_64_CM)
+/* Cortex-M33 address */
+#define TMU_BASE		0xC0680000
+#else
+/* Cortex-A720AE address */
 #define TMU_BASE		0x1C030000
+#endif
 
 /* Arm Generic Timer */
 #define CNTCR_BASE		0x1C000FFF /* Region 0 */
diff --git a/include/configs/rcar-gen5-common.h b/include/configs/rcar-gen5-common.h
index dc28d07c7f9..ed775da9087 100644
--- a/include/configs/rcar-gen5-common.h
+++ b/include/configs/rcar-gen5-common.h
@@ -17,6 +17,12 @@
 #define CFG_SYS_SDRAM_SIZE		(0x80000000u - DRAM_RSV_SIZE)
 #define CFG_MAX_MEM_MAPPED		(0x80000000u - DRAM_RSV_SIZE)
 
+/* Timer */
+#if defined(CONFIG_RCAR_64_CM)
+#define CFG_SYS_TIMER_COUNTER		(TMU_BASE + 0xc)	/* TCNT0 */
+#define CFG_SYS_TIMER_RATE		(133333333 / 4)
+#endif
+
 /* Environment setting */
 #define CFG_EXTRA_ENV_SETTINGS		\
 	"bootm_size=0x10000000\0"
-- 
2.53.0



More information about the U-Boot mailing list