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