blob: dc5b000e57756e5111f81bff7e55a61c45ca2c5f [file] [log] [blame]
developer65014b82015-04-13 14:47:57 +08001/*
2 * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * Redistributions of source code must retain the above copyright notice, this
8 * list of conditions and the following disclaimer.
9 *
10 * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 *
14 * Neither the name of ARM nor the names of its contributors may be used
15 * to endorse or promote products derived from this software without specific
16 * prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef __PLATFORM_DEF_H__
32#define __PLATFORM_DEF_H__
33
developer65014b82015-04-13 14:47:57 +080034
35/*******************************************************************************
36 * Platform binary types for linking
37 ******************************************************************************/
38#define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
39#define PLATFORM_LINKER_ARCH aarch64
40
41/*******************************************************************************
42 * Generic platform constants
43 ******************************************************************************/
44
45/* Size of cacheable stacks */
Soby Mathewc9bac9c2016-01-19 17:52:28 +000046#if IMAGE_BL1
developer65014b82015-04-13 14:47:57 +080047#define PLATFORM_STACK_SIZE 0x440
48#elif IMAGE_BL2
49#define PLATFORM_STACK_SIZE 0x400
50#elif IMAGE_BL31
51#define PLATFORM_STACK_SIZE 0x800
52#elif IMAGE_BL32
53#define PLATFORM_STACK_SIZE 0x440
54#endif
55
56#define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n"
57
58#define PLATFORM_MAX_AFFLVL MPIDR_AFFLVL2
59#define PLATFORM_SYSTEM_COUNT 1
60#define PLATFORM_CLUSTER_COUNT 2
61#define PLATFORM_CLUSTER0_CORE_COUNT 4
62#define PLATFORM_CLUSTER1_CORE_COUNT 2
63#define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER1_CORE_COUNT + \
64 PLATFORM_CLUSTER0_CORE_COUNT)
65#define PLATFORM_MAX_CPUS_PER_CLUSTER 4
66#define PLATFORM_NUM_AFFS (PLATFORM_SYSTEM_COUNT + \
67 PLATFORM_CLUSTER_COUNT + \
68 PLATFORM_CORE_COUNT)
69
70/*******************************************************************************
71 * Platform memory map related constants
72 ******************************************************************************/
developer44193252016-03-04 20:18:58 +080073/*
74 * MT8173 SRAM memory layout
75 * 0x100000 +-------------------+
76 * | shared mem (4KB) |
77 * 0x101000 +-------------------+
78 * | |
79 * | BL3-1 (124KB) |
80 * | |
81 * 0x120000 +-------------------+
82 * | reserved (64KB) |
83 * 0x130000 +-------------------+
84 */
85/* TF txet, ro, rw, xlat table, coherent memory ... etc.
86 * Size: release: 128KB, debug: 128KB
87 */
developer65014b82015-04-13 14:47:57 +080088#define TZRAM_BASE (0x100000)
89#if DEBUG
90#define TZRAM_SIZE (0x20000)
91#else
92#define TZRAM_SIZE (0x20000)
93#endif
94
developer44193252016-03-04 20:18:58 +080095/* Reserved: 64KB */
developer65014b82015-04-13 14:47:57 +080096#define TZRAM2_BASE (TZRAM_BASE + TZRAM_SIZE)
97#define TZRAM2_SIZE (0x10000)
98
99/*******************************************************************************
100 * BL31 specific defines.
101 ******************************************************************************/
102/*
103 * Put BL3-1 at the top of the Trusted SRAM (just below the shared memory, if
104 * present). BL31_BASE is calculated using the current BL3-1 debug size plus a
105 * little space for growth.
106 */
107#define BL31_BASE (TZRAM_BASE + 0x1000)
108#define BL31_LIMIT (TZRAM_BASE + TZRAM_SIZE)
109#define TZRAM2_LIMIT (TZRAM2_BASE + TZRAM2_SIZE)
110
111/*******************************************************************************
112 * Platform specific page table and MMU setup constants
113 ******************************************************************************/
114#define ADDR_SPACE_SIZE (1ull << 32)
115#define MAX_XLAT_TABLES 4
116#define MAX_MMAP_REGIONS 16
117
118/*******************************************************************************
119 * Declarations and constants to access the mailboxes safely. Each mailbox is
120 * aligned on the biggest cache line size in the platform. This is known only
121 * to the platform as it might have a combination of integrated and external
122 * caches. Such alignment ensures that two maiboxes do not sit on the same cache
123 * line at any cache level. They could belong to different cpus/clusters &
124 * get written while being protected by different locks causing corruption of
125 * a valid mailbox address.
126 ******************************************************************************/
127#define CACHE_WRITEBACK_SHIFT 6
128#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
129
130#endif /* __PLATFORM_DEF_H__ */