xref: /openbmc/u-boot/arch/arm/mach-k3/common.c (revision 3ba98ed8)
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
45