blob: ecc4d0a972308cdbce3a99c841b6b461ed949219 [file] [log] [blame]
Soren Brinkmannc8284402016-03-06 20:16:27 -08001/*
Sandrine Bailleuxb5fa6562016-05-18 16:11:47 +01002 * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
Soren Brinkmannc8284402016-03-06 20:16:27 -08003 *
dp-arm82cb2c12017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Soren Brinkmannc8284402016-03-06 20:16:27 -08005 */
6
7#include <bl_common.h>
8#include <console.h>
9#include <debug.h>
Soren Brinkmannc8284402016-03-06 20:16:27 -080010#include <plat_arm.h>
Isla Mitchellee1ebbd2017-07-14 10:46:32 +010011#include <platform_tsp.h>
Soren Brinkmannc8284402016-03-06 20:16:27 -080012#include "../zynqmp_private.h"
13
Soren Brinkmannc8284402016-03-06 20:16:27 -080014#define BL32_END (unsigned long)(&__BL32_END__)
15
Soren Brinkmannc8284402016-03-06 20:16:27 -080016/*******************************************************************************
17 * Initialize the UART
18 ******************************************************************************/
19void tsp_early_platform_setup(void)
20{
21 /*
22 * Initialize a different console than already in use to display
23 * messages from TSP
24 */
Soren Brinkmann7de544a2016-06-10 09:57:14 -070025 console_init(ZYNQMP_UART_BASE, zynqmp_get_uart_clk(),
Soren Brinkmannc8284402016-03-06 20:16:27 -080026 ZYNQMP_UART_BAUDRATE);
27
28 /* Initialize the platform config for future decision making */
29 zynqmp_config_setup();
30}
31
32/*******************************************************************************
33 * Perform platform specific setup placeholder
34 ******************************************************************************/
35void tsp_platform_setup(void)
36{
37 plat_arm_gic_driver_init();
38 plat_arm_gic_init();
39}
40
41/*******************************************************************************
42 * Perform the very early platform specific architectural setup here. At the
43 * moment this is only intializes the MMU
44 ******************************************************************************/
45void tsp_plat_arch_setup(void)
46{
Soren Brinkmann47395a22016-07-08 14:45:14 -070047 arm_setup_page_tables(BL32_BASE,
48 BL32_END - BL32_BASE,
49 BL_CODE_BASE,
Masahiro Yamadaecdc8982017-01-18 02:10:08 +090050 BL_CODE_END,
Soren Brinkmann47395a22016-07-08 14:45:14 -070051 BL_RO_DATA_BASE,
Masahiro Yamadaecdc8982017-01-18 02:10:08 +090052 BL_RO_DATA_END,
Masahiro Yamada47497052016-12-28 16:11:41 +090053 BL_COHERENT_RAM_BASE,
54 BL_COHERENT_RAM_END
Soren Brinkmannc8284402016-03-06 20:16:27 -080055 );
Sandrine Bailleuxb5fa6562016-05-18 16:11:47 +010056 enable_mmu_el1(0);
Soren Brinkmannc8284402016-03-06 20:16:27 -080057}