blob: d9741c19398243ddd46f84310a7a67a6ef919c70 [file] [log] [blame]
Marek Vasut56023302018-10-03 12:44:13 +02001// 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>
Simon Glass9a3b4ce2019-12-28 10:45:01 -07009#include <cpu_func.h>
Marek Vasut56023302018-10-03 12:44:13 +020010#include <asm/io.h>
11#include <spl.h>
12
13#define RCAR_CNTC_BASE 0xE6080000
14#define CNTCR_EN BIT(0)
15
16void board_init_f(ulong dummy)
17{
18 writel(CNTCR_EN, RCAR_CNTC_BASE);
19 timer_init();
20}
21
22void spl_board_init(void)
23{
24 /* UART clocks enabled and gd valid - init serial console */
25 preloader_console_init();
26}
27
28u32 spl_boot_device(void)
29{
30 return BOOT_DEVICE_UART;
31}
32
33void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
34{
35 debug("image entry point: 0x%lx\n", spl_image->entry_point);
36 if (spl_image->os == IH_OS_ARM_TRUSTED_FIRMWARE) {
37 typedef void (*image_entry_arg_t)(int, int, int, int)
38 __attribute__ ((noreturn));
39 image_entry_arg_t image_entry =
40 (image_entry_arg_t)(uintptr_t) spl_image->entry_point;
41 image_entry(IH_MAGIC, CONFIG_SPL_TEXT_BASE, 0, 0);
42 } else {
43 typedef void __noreturn (*image_entry_noargs_t)(void);
44 image_entry_noargs_t image_entry =
45 (image_entry_noargs_t)spl_image->entry_point;
46 image_entry();
47 }
48}
49
50void s_init(void)
51{
52}
53
54void reset_cpu(ulong addr)
55{
56}