arm64: renesas: Deduplicate R-Car Gen3 and Gen4 SPL
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Wed, 29 Jan 2025 17:04:34 +0000 (18:04 +0100)
committerMarek Vasut <marek.vasut+renesas@mailbox.org>
Wed, 29 Jan 2025 21:52:35 +0000 (22:52 +0100)
Move R-Car Gen3 and Gen4 jump_to_image_no_args() into dedicated
rcar64-spl.c file. The implementation of jump_to_image_no_args()
is identical. No functional change.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
board/renesas/common/Makefile
board/renesas/common/gen3-spl.c
board/renesas/common/gen4-spl.c
board/renesas/common/rcar64-spl.c [new file with mode: 0644]

index 8c26c0a..347be5c 100644 (file)
@@ -17,7 +17,9 @@ endif
 
 # 64 bit SoCs
 ifdef CONFIG_RCAR_64
-ifndef CONFIG_XPL_BUILD
+ifdef CONFIG_XPL_BUILD
+obj-y  += rcar64-spl.o
+else
 obj-y  += rcar64-common.o
 endif
 
index 44a20ce..9590b5d 100644 (file)
@@ -5,13 +5,9 @@
  * Copyright (C) 2019 Marek Vasut <marek.vasut@gmail.com>
  */
 
-#include <cpu_func.h>
-#include <image.h>
 #include <init.h>
-#include <log.h>
 #include <asm/io.h>
 #include <spl.h>
-#include <linux/bitops.h>
 
 #define RCAR_CNTC_BASE 0xE6080000
 #define CNTCR_EN       BIT(0)
@@ -33,23 +29,6 @@ u32 spl_boot_device(void)
        return BOOT_DEVICE_UART;
 }
 
-void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
-{
-       debug("image entry point: 0x%lx\n", spl_image->entry_point);
-       if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) {
-               typedef void (*image_entry_arg_t)(int, int, int, int)
-                       __attribute__ ((noreturn));
-               image_entry_arg_t image_entry =
-                       (image_entry_arg_t)(uintptr_t) spl_image->entry_point;
-               image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0);
-       } else {
-               typedef void __noreturn (*image_entry_noargs_t)(void);
-               image_entry_noargs_t image_entry =
-                       (image_entry_noargs_t)spl_image->entry_point;
-               image_entry();
-       }
-}
-
 void s_init(void)
 {
 }
index 2aca8ba..e46ef0a 100644 (file)
@@ -76,23 +76,6 @@ struct legacy_img_hdr *spl_get_load_buffer(ssize_t offset, size_t size)
        return map_sysmem(CONFIG_SYS_LOAD_ADDR + offset, 0);
 }
 
-void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
-{
-       debug("image entry point: 0x%lx\n", spl_image->entry_point);
-       if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) {
-               typedef void (*image_entry_arg_t)(int, int, int, int)
-                       __attribute__ ((noreturn));
-               image_entry_arg_t image_entry =
-                       (image_entry_arg_t)(uintptr_t) spl_image->entry_point;
-               image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0);
-       } else {
-               typedef void __noreturn (*image_entry_noargs_t)(void);
-               image_entry_noargs_t image_entry =
-                       (image_entry_noargs_t)spl_image->entry_point;
-               image_entry();
-       }
-}
-
 #define APMU_BASE 0xe6170000U
 #define CL0GRP3_BIT                    BIT(3)
 #define CL1GRP3_BIT                    BIT(7)
diff --git a/board/renesas/common/rcar64-spl.c b/board/renesas/common/rcar64-spl.c
new file mode 100644 (file)
index 0000000..76f2bde
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2024 Marek Vasut <marek.vasut+renesas@mailbox.org>
+ */
+
+#include <image.h>
+#include <spl.h>
+
+void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
+{
+       debug("image entry point: 0x%lx\n", spl_image->entry_point);
+       if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) {
+               typedef void (*image_entry_arg_t)(int, int, int, int)
+                       __attribute__ ((noreturn));
+               image_entry_arg_t image_entry =
+                       (image_entry_arg_t)(uintptr_t) spl_image->entry_point;
+               image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0);
+       } else {
+               typedef void __noreturn (*image_entry_noargs_t)(void);
+               image_entry_noargs_t image_entry =
+                       (image_entry_noargs_t)spl_image->entry_point;
+               image_entry();
+       }
+}