1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * R-Car Gen3 recovery SPL 4 * 5 * Copyright (C) 2019 Marek Vasut <marek.vasut@gmail.com> 6 */ 7 8 #include <common.h> 9 #include <cpu_func.h> 10 #include <image.h> 11 #include <init.h> 12 #include <log.h> 13 #include <asm/io.h> 14 #include <spl.h> 15 #include <linux/bitops.h> 16 17 #define RCAR_CNTC_BASE 0xE6080000 18 #define CNTCR_EN BIT(0) 19 board_init_f(ulong dummy)20void board_init_f(ulong dummy) 21 { 22 writel(CNTCR_EN, RCAR_CNTC_BASE); 23 timer_init(); 24 } 25 spl_board_init(void)26void spl_board_init(void) 27 { 28 /* UART clocks enabled and gd valid - init serial console */ 29 preloader_console_init(); 30 } 31 spl_boot_device(void)32u32 spl_boot_device(void) 33 { 34 return BOOT_DEVICE_UART; 35 } 36 jump_to_image_no_args(struct spl_image_info * spl_image)37void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) 38 { 39 debug("image entry point: 0x%lx\n", spl_image->entry_point); 40 if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) { 41 typedef void (*image_entry_arg_t)(int, int, int, int) 42 __attribute__ ((noreturn)); 43 image_entry_arg_t image_entry = 44 (image_entry_arg_t)(uintptr_t) spl_image->entry_point; 45 image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0); 46 } else { 47 typedef void __noreturn (*image_entry_noargs_t)(void); 48 image_entry_noargs_t image_entry = 49 (image_entry_noargs_t)spl_image->entry_point; 50 image_entry(); 51 } 52 } 53 s_init(void)54void s_init(void) 55 { 56 } 57 reset_cpu(void)58void reset_cpu(void) 59 { 60 } 61