Merge branch 'master' of git://git.denx.de/u-boot-i2c
[oweals/u-boot.git] / arch / arm / mach-k3 / common.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * K3: Common Architecture initialization
4  *
5  * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
6  *      Lokesh Vutla <lokeshvutla@ti.com>
7  */
8
9 #include <common.h>
10 #include <spl.h>
11 #include "common.h"
12 #include <dm.h>
13 #include <remoteproc.h>
14
15 #ifdef CONFIG_SYS_K3_SPL_ATF
16 void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
17 {
18         int ret;
19
20         /*
21          * It is assumed that remoteproc device 1 is the corresponding
22          * Cortex-A core which runs ATF. Make sure DT reflects the same.
23          */
24         ret = rproc_dev_init(1);
25         if (ret)
26                 panic("%s: ATF failed to initialize on rproc (%d)\n", __func__,
27                       ret);
28
29         ret = rproc_load(1, spl_image->entry_point, 0x200);
30         if (ret)
31                 panic("%s: ATF failed to load on rproc (%d)\n", __func__, ret);
32
33         /* Add an extra newline to differentiate the ATF logs from SPL */
34         printf("Starting ATF on ARM64 core...\n\n");
35
36         ret = rproc_start(1);
37         if (ret)
38                 panic("%s: ATF failed to start on rproc (%d)\n", __func__, ret);
39
40         debug("ATF started. Waiting indefinitely...\n");
41         while (1)
42                 asm volatile("wfe");
43 }
44 #endif