xref: /rk3399_ARM-atf/plat/mediatek/mt8183/include/platform_def.h (revision 3fa9dec43dbf1d8862d2e6c16dfac5fe6d8d317c)
1*3fa9dec4Skenny liang /*
2*3fa9dec4Skenny liang  * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3*3fa9dec4Skenny liang  *
4*3fa9dec4Skenny liang  * SPDX-License-Identifier: BSD-3-Clause
5*3fa9dec4Skenny liang  */
6*3fa9dec4Skenny liang 
7*3fa9dec4Skenny liang #ifndef PLATFORM_DEF_H
8*3fa9dec4Skenny liang #define PLATFORM_DEF_H
9*3fa9dec4Skenny liang 
10*3fa9dec4Skenny liang #include <arch.h>
11*3fa9dec4Skenny liang #include <drivers/arm/gic_common.h>
12*3fa9dec4Skenny liang 
13*3fa9dec4Skenny liang #define PLAT_PRIMARY_CPU   0x0
14*3fa9dec4Skenny liang 
15*3fa9dec4Skenny liang #define IO_PHYS            0x10000000
16*3fa9dec4Skenny liang #define INFRACFG_AO_BASE   (IO_PHYS + 0x1000)
17*3fa9dec4Skenny liang #define PERI_BASE          (IO_PHYS + 0x3000)
18*3fa9dec4Skenny liang #define GPIO_BASE          (IO_PHYS + 0x5000)
19*3fa9dec4Skenny liang #define SPM_BASE           (IO_PHYS + 0x6000)
20*3fa9dec4Skenny liang #define SLEEP_REG_MD_BASE  (IO_PHYS + 0xf000)
21*3fa9dec4Skenny liang #define RGU_BASE           (IO_PHYS + 0x7000)
22*3fa9dec4Skenny liang #define I2C4_BASE_SE       (IO_PHYS + 0x1008000)
23*3fa9dec4Skenny liang #define I2C2_BASE_SE       (IO_PHYS + 0x1009000)
24*3fa9dec4Skenny liang #define PMIC_WRAP_BASE     (IO_PHYS + 0xd000)
25*3fa9dec4Skenny liang #define MCUCFG_BASE        0x0c530000
26*3fa9dec4Skenny liang #define CFG_SF_CTRL        0x0c510014
27*3fa9dec4Skenny liang #define CFG_SF_INI         0x0c510010
28*3fa9dec4Skenny liang #define EMI_MPU_BASE       (IO_PHYS + 0x226000)
29*3fa9dec4Skenny liang #define TRNG_base          (IO_PHYS + 0x20f000)
30*3fa9dec4Skenny liang #define MT_GIC_BASE        0x0c000000
31*3fa9dec4Skenny liang #define PLAT_MT_CCI_BASE   0x0c500000
32*3fa9dec4Skenny liang #define CCI_SIZE           0x00010000
33*3fa9dec4Skenny liang #define EINT_BASE          0x1000b000
34*3fa9dec4Skenny liang #define DVFSRC_BASE        (IO_PHYS + 0x12000)
35*3fa9dec4Skenny liang 
36*3fa9dec4Skenny liang #define SSPM_CFGREG_BASE   (IO_PHYS + 0x440000)
37*3fa9dec4Skenny liang #define SSPM_MBOX_3_BASE   (IO_PHYS + 0x480000)
38*3fa9dec4Skenny liang 
39*3fa9dec4Skenny liang #define INFRACFG_AO_BASE   (IO_PHYS + 0x1000)
40*3fa9dec4Skenny liang 
41*3fa9dec4Skenny liang #define APMIXEDSYS         (IO_PHYS + 0xC000)
42*3fa9dec4Skenny liang #define ARMPLL_LL_CON0     (APMIXEDSYS + 0x200)
43*3fa9dec4Skenny liang #define ARMPLL_L_CON0      (APMIXEDSYS + 0x210)
44*3fa9dec4Skenny liang #define MAINPLL_CON0       (APMIXEDSYS + 0x220)
45*3fa9dec4Skenny liang #define CCIPLL_CON0        (APMIXEDSYS + 0x290)
46*3fa9dec4Skenny liang 
47*3fa9dec4Skenny liang #define TOP_CKMUXSEL       (INFRACFG_AO_BASE + 0x0)
48*3fa9dec4Skenny liang 
49*3fa9dec4Skenny liang #define armpll_mux1_sel_big_mask    (0xf << 4)
50*3fa9dec4Skenny liang #define armpll_mux1_sel_big_ARMSPLL (0x1 << 4)
51*3fa9dec4Skenny liang #define armpll_mux1_sel_sml_mask    (0xf << 8)
52*3fa9dec4Skenny liang #define armpll_mux1_sel_sml_ARMSPLL (0x1 << 8)
53*3fa9dec4Skenny liang 
54*3fa9dec4Skenny liang 
55*3fa9dec4Skenny liang /* Aggregate of all devices in the first GB */
56*3fa9dec4Skenny liang #define MTK_DEV_RNG0_BASE    IO_PHYS
57*3fa9dec4Skenny liang #define MTK_DEV_RNG0_SIZE    0x490000
58*3fa9dec4Skenny liang #define MTK_DEV_RNG1_BASE    (IO_PHYS + 0x1000000)
59*3fa9dec4Skenny liang #define MTK_DEV_RNG1_SIZE    0x4000000
60*3fa9dec4Skenny liang #define MTK_DEV_RNG2_BASE    0x0c000000
61*3fa9dec4Skenny liang #define MTK_DEV_RNG2_SIZE    0x600000
62*3fa9dec4Skenny liang #define MT_MCUSYS_SIZE       0x90000
63*3fa9dec4Skenny liang #define RAM_CONSOLE_BASE     0x11d000
64*3fa9dec4Skenny liang #define RAM_CONSOLE_SIZE     0x1000
65*3fa9dec4Skenny liang 
66*3fa9dec4Skenny liang /*******************************************************************************
67*3fa9dec4Skenny liang  * MSDC
68*3fa9dec4Skenny liang  ******************************************************************************/
69*3fa9dec4Skenny liang #define MSDC0_BASE          (IO_PHYS + 0x01230000)
70*3fa9dec4Skenny liang 
71*3fa9dec4Skenny liang /*******************************************************************************
72*3fa9dec4Skenny liang  * MCUSYS related constants
73*3fa9dec4Skenny liang  ******************************************************************************/
74*3fa9dec4Skenny liang #define MT_L2_WRITE_ACCESS_RATE  (MCUCFG_BASE + 0x604)
75*3fa9dec4Skenny liang #define MP0_CA7L_CACHE_CONFIG    (MCUCFG_BASE + 0x7f0)
76*3fa9dec4Skenny liang #define MP1_CA7L_CACHE_CONFIG    (MCUCFG_BASE + 0x7f4)
77*3fa9dec4Skenny liang 
78*3fa9dec4Skenny liang /*******************************************************************************
79*3fa9dec4Skenny liang  * GIC related constants
80*3fa9dec4Skenny liang  ******************************************************************************/
81*3fa9dec4Skenny liang #define MT_POLARITY_LOW     0
82*3fa9dec4Skenny liang #define MT_POLARITY_HIGH    1
83*3fa9dec4Skenny liang #define MT_EDGE_SENSITIVE   1
84*3fa9dec4Skenny liang #define MT_LEVEL_SENSITIVE  0
85*3fa9dec4Skenny liang 
86*3fa9dec4Skenny liang /*******************************************************************************
87*3fa9dec4Skenny liang  * UART related constants
88*3fa9dec4Skenny liang  ******************************************************************************/
89*3fa9dec4Skenny liang #define UART0_BASE    (IO_PHYS + 0x01002000)
90*3fa9dec4Skenny liang 
91*3fa9dec4Skenny liang #define UART_BAUDRATE 115200
92*3fa9dec4Skenny liang #define UART_CLOCK    26000000
93*3fa9dec4Skenny liang 
94*3fa9dec4Skenny liang /*******************************************************************************
95*3fa9dec4Skenny liang  * System counter frequency related constants
96*3fa9dec4Skenny liang  ******************************************************************************/
97*3fa9dec4Skenny liang #define SYS_COUNTER_FREQ_IN_TICKS    13000000
98*3fa9dec4Skenny liang #define SYS_COUNTER_FREQ_IN_MHZ      13
99*3fa9dec4Skenny liang 
100*3fa9dec4Skenny liang /*******************************************************************************
101*3fa9dec4Skenny liang  * GIC-400 & interrupt handling related constants
102*3fa9dec4Skenny liang  ******************************************************************************/
103*3fa9dec4Skenny liang 
104*3fa9dec4Skenny liang /* Base MTK_platform compatible GIC memory map */
105*3fa9dec4Skenny liang #define BASE_GICD_BASE        MT_GIC_BASE
106*3fa9dec4Skenny liang #define BASE_GICC_BASE        (MT_GIC_BASE + 0x400000)
107*3fa9dec4Skenny liang #define MT_GIC_RDIST_BASE     (MT_GIC_BASE + 0x100000)
108*3fa9dec4Skenny liang #define BASE_GICR_BASE        (MT_GIC_BASE + 0x100000)
109*3fa9dec4Skenny liang #define BASE_GICH_BASE        (MT_GIC_BASE + 0x4000)
110*3fa9dec4Skenny liang #define BASE_GICV_BASE        (MT_GIC_BASE + 0x6000)
111*3fa9dec4Skenny liang #define INT_POL_CTL0          (MCUCFG_BASE + 0xa80)
112*3fa9dec4Skenny liang #define SEC_POL_CTL_EN0       (MCUCFG_BASE + 0xa00)
113*3fa9dec4Skenny liang #define GIC_SYNC_DCM          (MCUCFG_BASE + 0x758)
114*3fa9dec4Skenny liang #define GIC_SYNC_DCM_MASK     0x3
115*3fa9dec4Skenny liang #define GIC_SYNC_DCM_ON       0x3
116*3fa9dec4Skenny liang #define GIC_SYNC_DCM_OFF      0x0
117*3fa9dec4Skenny liang #define GIC_PRIVATE_SIGNALS   32
118*3fa9dec4Skenny liang 
119*3fa9dec4Skenny liang #define PLAT_ARM_GICD_BASE BASE_GICD_BASE
120*3fa9dec4Skenny liang #define PLAT_ARM_GICC_BASE BASE_GICC_BASE
121*3fa9dec4Skenny liang 
122*3fa9dec4Skenny liang #define PLAT_ARM_G1S_IRQ_PROPS(grp) ( \
123*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_0, GIC_HIGHEST_SEC_PRIORITY, grp, \
124*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
125*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, grp, \
126*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
127*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, grp, \
128*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
129*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, grp, \
130*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
131*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, grp, \
132*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
133*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, grp, \
134*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
135*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, grp, \
136*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE), \
137*3fa9dec4Skenny liang INTR_PROP_DESC(MT_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, grp, \
138*3fa9dec4Skenny liang 			GIC_INTR_CFG_EDGE)) \
139*3fa9dec4Skenny liang 
140*3fa9dec4Skenny liang #define PLAT_ARM_G0_IRQ_PROPS(grp)
141*3fa9dec4Skenny liang 
142*3fa9dec4Skenny liang /*******************************************************************************
143*3fa9dec4Skenny liang  * CCI-400 related constants
144*3fa9dec4Skenny liang  ******************************************************************************/
145*3fa9dec4Skenny liang #define PLAT_MT_CCI_CLUSTER0_SL_IFACE_IX    4
146*3fa9dec4Skenny liang #define PLAT_MT_CCI_CLUSTER1_SL_IFACE_IX    3
147*3fa9dec4Skenny liang 
148*3fa9dec4Skenny liang /*******************************************************************************
149*3fa9dec4Skenny liang  * WDT Registers
150*3fa9dec4Skenny liang  ******************************************************************************/
151*3fa9dec4Skenny liang #define MTK_WDT_BASE            (IO_PHYS + 0x00007000)
152*3fa9dec4Skenny liang #define MTK_WDT_SIZE            0x1000
153*3fa9dec4Skenny liang #define MTK_WDT_MODE            (MTK_WDT_BASE + 0x0000)
154*3fa9dec4Skenny liang #define MTK_WDT_LENGTH          (MTK_WDT_BASE + 0x0004)
155*3fa9dec4Skenny liang #define MTK_WDT_RESTART         (MTK_WDT_BASE + 0x0008)
156*3fa9dec4Skenny liang #define MTK_WDT_STATUS          (MTK_WDT_BASE + 0x000C)
157*3fa9dec4Skenny liang #define MTK_WDT_INTERVAL        (MTK_WDT_BASE + 0x0010)
158*3fa9dec4Skenny liang #define MTK_WDT_SWRST           (MTK_WDT_BASE + 0x0014)
159*3fa9dec4Skenny liang #define MTK_WDT_SWSYSRST        (MTK_WDT_BASE + 0x0018)
160*3fa9dec4Skenny liang #define MTK_WDT_NONRST_REG      (MTK_WDT_BASE + 0x0020)
161*3fa9dec4Skenny liang #define MTK_WDT_NONRST_REG2     (MTK_WDT_BASE + 0x0024)
162*3fa9dec4Skenny liang #define MTK_WDT_REQ_MODE        (MTK_WDT_BASE + 0x0030)
163*3fa9dec4Skenny liang #define MTK_WDT_REQ_IRQ_EN      (MTK_WDT_BASE + 0x0034)
164*3fa9dec4Skenny liang #define MTK_WDT_EXT_REQ_CON     (MTK_WDT_BASE + 0x0038)
165*3fa9dec4Skenny liang #define MTK_WDT_DEBUG_CTL       (MTK_WDT_BASE + 0x0040)
166*3fa9dec4Skenny liang #define MTK_WDT_LATCH_CTL       (MTK_WDT_BASE + 0x0044)
167*3fa9dec4Skenny liang #define MTK_WDT_DEBUG_CTL2      (MTK_WDT_BASE + 0x00A0)
168*3fa9dec4Skenny liang #define MTK_WDT_COUNTER         (MTK_WDT_BASE + 0x0514)
169*3fa9dec4Skenny liang 
170*3fa9dec4Skenny liang /* WDT_STATUS */
171*3fa9dec4Skenny liang #define MTK_WDT_STATUS_SPM_THERMAL_RST      (1 << 0)
172*3fa9dec4Skenny liang #define MTK_WDT_STATUS_SPM_RST              (1 << 1)
173*3fa9dec4Skenny liang #define MTK_WDT_STATUS_EINT_RST             (1 << 2)
174*3fa9dec4Skenny liang #define MTK_WDT_STATUS_SYSRST_RST           (1 << 3) /* from PMIC */
175*3fa9dec4Skenny liang #define MTK_WDT_STATUS_DVFSP_RST            (1 << 4)
176*3fa9dec4Skenny liang #define MTK_WDT_STATUS_PMCU_RST             (1 << 16)
177*3fa9dec4Skenny liang #define MTK_WDT_STATUS_MDDBG_RST            (1 << 17)
178*3fa9dec4Skenny liang #define MTK_WDT_STATUS_THERMAL_DIRECT_RST   (1 << 18)
179*3fa9dec4Skenny liang #define MTK_WDT_STATUS_DEBUG_RST            (1 << 19)
180*3fa9dec4Skenny liang #define MTK_WDT_STATUS_SECURITY_RST         (1 << 28)
181*3fa9dec4Skenny liang #define MTK_WDT_STATUS_IRQ_ASSERT           (1 << 29)
182*3fa9dec4Skenny liang #define MTK_WDT_STATUS_SW_WDT_RST           (1 << 30)
183*3fa9dec4Skenny liang #define MTK_WDT_STATUS_HW_WDT_RST           (1 << 31)
184*3fa9dec4Skenny liang 
185*3fa9dec4Skenny liang /* RGU other related */
186*3fa9dec4Skenny liang #define MTK_WDT_MODE_DUAL_MODE    0x0040
187*3fa9dec4Skenny liang #define MTK_WDT_MODE_IRQ          0x0008
188*3fa9dec4Skenny liang #define MTK_WDT_MODE_KEY          0x22000000
189*3fa9dec4Skenny liang #define MTK_WDT_MODE_EXTEN        0x0004
190*3fa9dec4Skenny liang #define MTK_WDT_SWRST_KEY         0x1209
191*3fa9dec4Skenny liang #define MTK_WDT_RESTART_KEY       0x1971
192*3fa9dec4Skenny liang 
193*3fa9dec4Skenny liang /*******************************************************************************
194*3fa9dec4Skenny liang  * TRNG Registers
195*3fa9dec4Skenny liang  ******************************************************************************/
196*3fa9dec4Skenny liang #define TRNG_BASE_ADDR       TRNG_base
197*3fa9dec4Skenny liang #define TRNG_BASE_SIZE       0x1000
198*3fa9dec4Skenny liang #define TRNG_CTRL            (TRNG_base + 0x0000)
199*3fa9dec4Skenny liang #define TRNG_TIME            (TRNG_base + 0x0004)
200*3fa9dec4Skenny liang #define TRNG_DATA            (TRNG_base + 0x0008)
201*3fa9dec4Skenny liang #define TRNG_PDN_base        0x10001000
202*3fa9dec4Skenny liang #define TRNG_PDN_BASE_ADDR   TRNG_PDN_BASE_ADDR
203*3fa9dec4Skenny liang #define TRNG_PDN_BASE_SIZE   0x1000
204*3fa9dec4Skenny liang #define TRNG_PDN_SET         (TRNG_PDN_base + 0x0088)
205*3fa9dec4Skenny liang #define TRNG_PDN_CLR         (TRNG_PDN_base + 0x008c)
206*3fa9dec4Skenny liang #define TRNG_PDN_STATUS      (TRNG_PDN_base + 0x0094)
207*3fa9dec4Skenny liang #define TRNG_CTRL_RDY        0x80000000
208*3fa9dec4Skenny liang #define TRNG_CTRL_START      0x00000001
209*3fa9dec4Skenny liang #define TRNG_PDN_VALUE       0x200
210*3fa9dec4Skenny liang 
211*3fa9dec4Skenny liang /* FIQ platform related define */
212*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_0    8
213*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_1    9
214*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_2    10
215*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_3    11
216*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_4    12
217*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_5    13
218*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_6    14
219*3fa9dec4Skenny liang #define MT_IRQ_SEC_SGI_7    15
220*3fa9dec4Skenny liang 
221*3fa9dec4Skenny liang #define FIQ_SMP_CALL_SGI    13
222*3fa9dec4Skenny liang #define WDT_IRQ_BIT_ID      174
223*3fa9dec4Skenny liang #define ATF_LOG_IRQ_ID      277
224*3fa9dec4Skenny liang 
225*3fa9dec4Skenny liang #define ATF_AMMS_IRQ_ID     338
226*3fa9dec4Skenny liang #define PCCIF1_IRQ0_BIT_ID  185
227*3fa9dec4Skenny liang #define PCCIF1_IRQ1_BIT_ID  186
228*3fa9dec4Skenny liang 
229*3fa9dec4Skenny liang #define DEBUG_XLAT_TABLE    0
230*3fa9dec4Skenny liang 
231*3fa9dec4Skenny liang /*******************************************************************************
232*3fa9dec4Skenny liang  * Platform binary types for linking
233*3fa9dec4Skenny liang  ******************************************************************************/
234*3fa9dec4Skenny liang #define PLATFORM_LINKER_FORMAT      "elf64-littleaarch64"
235*3fa9dec4Skenny liang #define PLATFORM_LINKER_ARCH        aarch64
236*3fa9dec4Skenny liang 
237*3fa9dec4Skenny liang /*******************************************************************************
238*3fa9dec4Skenny liang  * Generic platform constants
239*3fa9dec4Skenny liang  ******************************************************************************/
240*3fa9dec4Skenny liang 
241*3fa9dec4Skenny liang /* Size of cacheable stacks */
242*3fa9dec4Skenny liang #if DEBUG_XLAT_TABLE
243*3fa9dec4Skenny liang #define PLATFORM_STACK_SIZE    0x800
244*3fa9dec4Skenny liang #elif IMAGE_BL1
245*3fa9dec4Skenny liang #define PLATFORM_STACK_SIZE    0x440
246*3fa9dec4Skenny liang #elif IMAGE_BL2
247*3fa9dec4Skenny liang #define PLATFORM_STACK_SIZE    0x400
248*3fa9dec4Skenny liang #elif IMAGE_BL31
249*3fa9dec4Skenny liang #define PLATFORM_STACK_SIZE    0x800
250*3fa9dec4Skenny liang #elif IMAGE_BL32
251*3fa9dec4Skenny liang #define PLATFORM_STACK_SIZE    0x440
252*3fa9dec4Skenny liang #endif
253*3fa9dec4Skenny liang 
254*3fa9dec4Skenny liang #define FIRMWARE_WELCOME_STR    "Booting Trusted Firmware\n"
255*3fa9dec4Skenny liang #define PLAT_MAX_PWR_LVL        U(2)
256*3fa9dec4Skenny liang #define PLAT_MAX_RET_STATE		U(1)
257*3fa9dec4Skenny liang #define PLAT_MAX_OFF_STATE		U(2)
258*3fa9dec4Skenny liang 
259*3fa9dec4Skenny liang #define PLATFORM_CACHE_LINE_SIZE        64
260*3fa9dec4Skenny liang #define PLATFORM_SYSTEM_COUNT           1
261*3fa9dec4Skenny liang #define PLATFORM_CLUSTER_COUNT          2
262*3fa9dec4Skenny liang #define PLATFORM_CLUSTER0_CORE_COUNT    4
263*3fa9dec4Skenny liang #define PLATFORM_CLUSTER1_CORE_COUNT    4
264*3fa9dec4Skenny liang #define PLATFORM_CORE_COUNT             (PLATFORM_CLUSTER1_CORE_COUNT + \
265*3fa9dec4Skenny liang 					 PLATFORM_CLUSTER0_CORE_COUNT)
266*3fa9dec4Skenny liang #define PLATFORM_MAX_CPUS_PER_CLUSTER   4
267*3fa9dec4Skenny liang #define PLATFORM_NUM_AFFS               (PLATFORM_SYSTEM_COUNT + \
268*3fa9dec4Skenny liang 					 PLATFORM_CLUSTER_COUNT + \
269*3fa9dec4Skenny liang 					 PLATFORM_CORE_COUNT)
270*3fa9dec4Skenny liang 
271*3fa9dec4Skenny liang /*******************************************************************************
272*3fa9dec4Skenny liang  * Platform memory map related constants
273*3fa9dec4Skenny liang  ******************************************************************************/
274*3fa9dec4Skenny liang 
275*3fa9dec4Skenny liang #define TZRAM_BASE          0x54600000
276*3fa9dec4Skenny liang #define TZRAM_SIZE          0x00020000
277*3fa9dec4Skenny liang 
278*3fa9dec4Skenny liang /*******************************************************************************
279*3fa9dec4Skenny liang  * BL31 specific defines.
280*3fa9dec4Skenny liang  ******************************************************************************/
281*3fa9dec4Skenny liang /*
282*3fa9dec4Skenny liang  * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if
283*3fa9dec4Skenny liang  * present). BL31_BASE is calculated using the current BL31 debug size plus a
284*3fa9dec4Skenny liang  * little space for growth.
285*3fa9dec4Skenny liang  */
286*3fa9dec4Skenny liang #define BL31_BASE       (TZRAM_BASE + 0x1000)
287*3fa9dec4Skenny liang #define BL31_LIMIT      (TZRAM_BASE + TZRAM_SIZE)
288*3fa9dec4Skenny liang 
289*3fa9dec4Skenny liang /*******************************************************************************
290*3fa9dec4Skenny liang  * Platform specific page table and MMU setup constants
291*3fa9dec4Skenny liang  ******************************************************************************/
292*3fa9dec4Skenny liang #define PLAT_PHY_ADDR_SPACE_SIZE    (1ULL << 32)
293*3fa9dec4Skenny liang #define PLAT_VIRT_ADDR_SPACE_SIZE   (1ULL << 32)
294*3fa9dec4Skenny liang #define MAX_XLAT_TABLES             4
295*3fa9dec4Skenny liang #define MAX_MMAP_REGIONS            16
296*3fa9dec4Skenny liang 
297*3fa9dec4Skenny liang /*******************************************************************************
298*3fa9dec4Skenny liang  * Declarations and constants to access the mailboxes safely. Each mailbox is
299*3fa9dec4Skenny liang  * aligned on the biggest cache line size in the platform. This is known only
300*3fa9dec4Skenny liang  * to the platform as it might have a combination of integrated and external
301*3fa9dec4Skenny liang  * caches. Such alignment ensures that two maiboxes do not sit on the same cache
302*3fa9dec4Skenny liang  * line at any cache level. They could belong to different cpus/clusters &
303*3fa9dec4Skenny liang  * get written while being protected by different locks causing corruption of
304*3fa9dec4Skenny liang  * a valid mailbox address.
305*3fa9dec4Skenny liang  ******************************************************************************/
306*3fa9dec4Skenny liang #define CACHE_WRITEBACK_SHIFT    6
307*3fa9dec4Skenny liang #define CACHE_WRITEBACK_GRANULE  (1 << CACHE_WRITEBACK_SHIFT)
308*3fa9dec4Skenny liang #endif /* PLATFORM_DEF_H */
309