xref: /arm-trusted-firmware/plat/socionext/synquacer/sq_bl2_setup.c (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2022, Socionext Inc. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #include <errno.h>
8*91f16700Schasinglulu 
9*91f16700Schasinglulu #include <common/bl_common.h>
10*91f16700Schasinglulu #include <common/debug.h>
11*91f16700Schasinglulu #include <common/desc_image_load.h>
12*91f16700Schasinglulu #include <common/image_decompress.h>
13*91f16700Schasinglulu #include <drivers/arm/pl011.h>
14*91f16700Schasinglulu #include <drivers/io/io_storage.h>
15*91f16700Schasinglulu #include <lib/xlat_tables/xlat_tables_v2.h>
16*91f16700Schasinglulu #include <plat/common/platform.h>
17*91f16700Schasinglulu 
18*91f16700Schasinglulu #include <platform_def.h>
19*91f16700Schasinglulu #include <sq_common.h>
20*91f16700Schasinglulu 
21*91f16700Schasinglulu static console_t console;
22*91f16700Schasinglulu 
23*91f16700Schasinglulu void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1,
24*91f16700Schasinglulu 				  u_register_t x2, u_register_t x3)
25*91f16700Schasinglulu {
26*91f16700Schasinglulu 	/* Initialize the console to provide early debug support */
27*91f16700Schasinglulu 	(void)console_pl011_register(PLAT_SQ_BOOT_UART_BASE,
28*91f16700Schasinglulu 			       PLAT_SQ_BOOT_UART_CLK_IN_HZ,
29*91f16700Schasinglulu 			       SQ_CONSOLE_BAUDRATE, &console);
30*91f16700Schasinglulu 	console_set_scope(&console, CONSOLE_FLAG_BOOT);
31*91f16700Schasinglulu }
32*91f16700Schasinglulu 
33*91f16700Schasinglulu void bl2_el3_plat_arch_setup(void)
34*91f16700Schasinglulu {
35*91f16700Schasinglulu 	int ret;
36*91f16700Schasinglulu 
37*91f16700Schasinglulu 	sq_mmap_setup(BL2_BASE, BL2_SIZE, NULL);
38*91f16700Schasinglulu 
39*91f16700Schasinglulu 	ret = sq_io_setup();
40*91f16700Schasinglulu 	if (ret) {
41*91f16700Schasinglulu 		ERROR("failed to setup io devices\n");
42*91f16700Schasinglulu 		plat_error_handler(ret);
43*91f16700Schasinglulu 	}
44*91f16700Schasinglulu }
45*91f16700Schasinglulu 
46*91f16700Schasinglulu void bl2_platform_setup(void)
47*91f16700Schasinglulu {
48*91f16700Schasinglulu }
49*91f16700Schasinglulu 
50*91f16700Schasinglulu void plat_flush_next_bl_params(void)
51*91f16700Schasinglulu {
52*91f16700Schasinglulu 	flush_bl_params_desc();
53*91f16700Schasinglulu }
54*91f16700Schasinglulu 
55*91f16700Schasinglulu bl_load_info_t *plat_get_bl_image_load_info(void)
56*91f16700Schasinglulu {
57*91f16700Schasinglulu 	return get_bl_load_info_from_mem_params_desc();
58*91f16700Schasinglulu }
59*91f16700Schasinglulu 
60*91f16700Schasinglulu bl_params_t *plat_get_next_bl_params(void)
61*91f16700Schasinglulu {
62*91f16700Schasinglulu 	return get_next_bl_params_from_mem_params_desc();
63*91f16700Schasinglulu }
64*91f16700Schasinglulu 
65*91f16700Schasinglulu void bl2_plat_preload_setup(void)
66*91f16700Schasinglulu {
67*91f16700Schasinglulu }
68*91f16700Schasinglulu 
69*91f16700Schasinglulu int bl2_plat_handle_pre_image_load(unsigned int image_id)
70*91f16700Schasinglulu {
71*91f16700Schasinglulu 	struct image_info *image_info;
72*91f16700Schasinglulu 
73*91f16700Schasinglulu 	image_info = sq_get_image_info(image_id);
74*91f16700Schasinglulu 
75*91f16700Schasinglulu 	return mmap_add_dynamic_region(image_info->image_base,
76*91f16700Schasinglulu 				      image_info->image_base,
77*91f16700Schasinglulu 				      image_info->image_max_size,
78*91f16700Schasinglulu 				      MT_MEMORY | MT_RW | MT_NS);
79*91f16700Schasinglulu }
80*91f16700Schasinglulu 
81*91f16700Schasinglulu int bl2_plat_handle_post_image_load(unsigned int image_id)
82*91f16700Schasinglulu {
83*91f16700Schasinglulu 	return 0;
84*91f16700Schasinglulu }
85