1 /*
2  * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <common/bl_common.h>
8 #include <common/debug.h>
9 #include <drivers/console.h>
10 #include <plat/arm/common/plat_arm.h>
11 
12 #include <plat_private.h>
13 #include <platform_tsp.h>
14 
15 /*******************************************************************************
16  * Initialize the UART
17  ******************************************************************************/
tsp_early_platform_setup(void)18 void tsp_early_platform_setup(void)
19 {
20 	/*
21 	 * Register a different console than already in use to display
22 	 * messages from TSP
23 	 */
24 	static console_t tsp_boot_console;
25 	(void)console_cdns_register(ZYNQMP_UART_BASE,
26 				       zynqmp_get_uart_clk(),
27 				       ZYNQMP_UART_BAUDRATE,
28 				       &tsp_boot_console);
29 	console_set_scope(&tsp_boot_console,
30 			  CONSOLE_FLAG_RUNTIME | CONSOLE_FLAG_BOOT);
31 
32 	/* Initialize the platform config for future decision making */
33 	zynqmp_config_setup();
34 }
35 
36 /*******************************************************************************
37  * Perform platform specific setup placeholder
38  ******************************************************************************/
tsp_platform_setup(void)39 void tsp_platform_setup(void)
40 {
41 	plat_arm_gic_driver_init();
42 	plat_arm_gic_init();
43 }
44 
45 /*******************************************************************************
46  * Perform the very early platform specific architectural setup here. At the
47  * moment this is only intializes the MMU
48  ******************************************************************************/
tsp_plat_arch_setup(void)49 void tsp_plat_arch_setup(void)
50 {
51 	const mmap_region_t bl_regions[] = {
52 		MAP_REGION_FLAT(BL32_BASE, BL32_END - BL32_BASE,
53 			MT_MEMORY | MT_RW | MT_SECURE),
54 		MAP_REGION_FLAT(BL_CODE_BASE, BL_CODE_END - BL_CODE_BASE,
55 			MT_CODE | MT_SECURE),
56 		MAP_REGION_FLAT(BL_RO_DATA_BASE, BL_RO_DATA_END - BL_RO_DATA_BASE,
57 			MT_RO_DATA | MT_SECURE),
58 		MAP_REGION_FLAT(BL_COHERENT_RAM_BASE,
59 			BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE,
60 			MT_DEVICE | MT_RW | MT_SECURE),
61 		{0}
62 	};
63 
64 	setup_page_tables(bl_regions, plat_arm_get_mmap());
65 	enable_mmu_el1(0);
66 }
67