xref: /arm-trusted-firmware/plat/mediatek/mt8173/include/mt8173_def.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef MT8173_DEF_H
8*91f16700Schasinglulu #define MT8173_DEF_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #if RESET_TO_BL31
11*91f16700Schasinglulu #error "MT8173 is incompatible with RESET_TO_BL31!"
12*91f16700Schasinglulu #endif
13*91f16700Schasinglulu 
14*91f16700Schasinglulu #define MT8173_PRIMARY_CPU	0x0
15*91f16700Schasinglulu 
16*91f16700Schasinglulu /* Register base address */
17*91f16700Schasinglulu #define IO_PHYS			(0x10000000)
18*91f16700Schasinglulu #define INFRACFG_AO_BASE	(IO_PHYS + 0x1000)
19*91f16700Schasinglulu #define SRAMROM_SEC_BASE	(IO_PHYS + 0x1800)
20*91f16700Schasinglulu #define PERI_CON_BASE		(IO_PHYS + 0x3000)
21*91f16700Schasinglulu #define GPIO_BASE		(IO_PHYS + 0x5000)
22*91f16700Schasinglulu #define SPM_BASE		(IO_PHYS + 0x6000)
23*91f16700Schasinglulu #define RGU_BASE		(IO_PHYS + 0x7000)
24*91f16700Schasinglulu #define PMIC_WRAP_BASE		(IO_PHYS + 0xD000)
25*91f16700Schasinglulu #define DEVAPC0_BASE		(IO_PHYS + 0xE000)
26*91f16700Schasinglulu #define MCUCFG_BASE		(IO_PHYS + 0x200000)
27*91f16700Schasinglulu #define APMIXED_BASE		(IO_PHYS + 0x209000)
28*91f16700Schasinglulu #define TRNG_BASE		(IO_PHYS + 0x20F000)
29*91f16700Schasinglulu #define CRYPT_BASE		(IO_PHYS + 0x210000)
30*91f16700Schasinglulu #define MT_GIC_BASE		(IO_PHYS + 0x220000)
31*91f16700Schasinglulu #define PLAT_MT_CCI_BASE	(IO_PHYS + 0x390000)
32*91f16700Schasinglulu 
33*91f16700Schasinglulu /* Aggregate of all devices in the first GB */
34*91f16700Schasinglulu #define MTK_DEV_RNG0_BASE	IO_PHYS
35*91f16700Schasinglulu #define MTK_DEV_RNG0_SIZE	0x400000
36*91f16700Schasinglulu #define MTK_DEV_RNG1_BASE	(IO_PHYS + 0x1000000)
37*91f16700Schasinglulu #define MTK_DEV_RNG1_SIZE	0x4000000
38*91f16700Schasinglulu 
39*91f16700Schasinglulu /* SRAMROM related registers */
40*91f16700Schasinglulu #define SRAMROM_SEC_CTRL	(SRAMROM_SEC_BASE + 0x4)
41*91f16700Schasinglulu #define SRAMROM_SEC_ADDR	(SRAMROM_SEC_BASE + 0x8)
42*91f16700Schasinglulu 
43*91f16700Schasinglulu /* DEVAPC0 related registers */
44*91f16700Schasinglulu #define DEVAPC0_MAS_SEC_0	(DEVAPC0_BASE + 0x500)
45*91f16700Schasinglulu #define DEVAPC0_APC_CON		(DEVAPC0_BASE + 0xF00)
46*91f16700Schasinglulu 
47*91f16700Schasinglulu /*******************************************************************************
48*91f16700Schasinglulu  * UART related constants
49*91f16700Schasinglulu  ******************************************************************************/
50*91f16700Schasinglulu #define MT8173_UART0_BASE	(IO_PHYS + 0x01002000)
51*91f16700Schasinglulu #define MT8173_UART1_BASE	(IO_PHYS + 0x01003000)
52*91f16700Schasinglulu #define MT8173_UART2_BASE	(IO_PHYS + 0x01004000)
53*91f16700Schasinglulu #define MT8173_UART3_BASE	(IO_PHYS + 0x01005000)
54*91f16700Schasinglulu 
55*91f16700Schasinglulu #define MT8173_BAUDRATE		(115200)
56*91f16700Schasinglulu #define MT8173_UART_CLOCK	(26000000)
57*91f16700Schasinglulu 
58*91f16700Schasinglulu /*******************************************************************************
59*91f16700Schasinglulu  * System counter frequency related constants
60*91f16700Schasinglulu  ******************************************************************************/
61*91f16700Schasinglulu #define SYS_COUNTER_FREQ_IN_TICKS	13000000
62*91f16700Schasinglulu 
63*91f16700Schasinglulu /*******************************************************************************
64*91f16700Schasinglulu  * GIC-400 & interrupt handling related constants
65*91f16700Schasinglulu  ******************************************************************************/
66*91f16700Schasinglulu 
67*91f16700Schasinglulu /* Base MTK_platform compatible GIC memory map */
68*91f16700Schasinglulu #define BASE_GICD_BASE		(MT_GIC_BASE + 0x1000)
69*91f16700Schasinglulu #define BASE_GICC_BASE		(MT_GIC_BASE + 0x2000)
70*91f16700Schasinglulu #define BASE_GICR_BASE		0	/* no GICR in GIC-400 */
71*91f16700Schasinglulu #define BASE_GICH_BASE		(MT_GIC_BASE + 0x4000)
72*91f16700Schasinglulu #define BASE_GICV_BASE		(MT_GIC_BASE + 0x6000)
73*91f16700Schasinglulu #define INT_POL_CTL0		0x10200620
74*91f16700Schasinglulu 
75*91f16700Schasinglulu #define GIC_PRIVATE_SIGNALS	(32)
76*91f16700Schasinglulu 
77*91f16700Schasinglulu /*******************************************************************************
78*91f16700Schasinglulu  * CCI-400 related constants
79*91f16700Schasinglulu  ******************************************************************************/
80*91f16700Schasinglulu #define PLAT_MT_CCI_CLUSTER0_SL_IFACE_IX	4
81*91f16700Schasinglulu #define PLAT_MT_CCI_CLUSTER1_SL_IFACE_IX	3
82*91f16700Schasinglulu 
83*91f16700Schasinglulu /* FIQ platform related define */
84*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_0	8
85*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_1	9
86*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_2	10
87*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_3	11
88*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_4	12
89*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_5	13
90*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_6	14
91*91f16700Schasinglulu #define MT_IRQ_SEC_SGI_7	15
92*91f16700Schasinglulu 
93*91f16700Schasinglulu /*
94*91f16700Schasinglulu  *  Macros for local power states in MTK platforms encoded by State-ID field
95*91f16700Schasinglulu  *  within the power-state parameter.
96*91f16700Schasinglulu  */
97*91f16700Schasinglulu /* Local power state for power domains in Run state. */
98*91f16700Schasinglulu #define MTK_LOCAL_STATE_RUN     0
99*91f16700Schasinglulu /* Local power state for retention. Valid only for CPU power domains */
100*91f16700Schasinglulu #define MTK_LOCAL_STATE_RET     1
101*91f16700Schasinglulu /* Local power state for OFF/power-down. Valid for CPU and cluster power
102*91f16700Schasinglulu  * domains
103*91f16700Schasinglulu  */
104*91f16700Schasinglulu #define MTK_LOCAL_STATE_OFF     2
105*91f16700Schasinglulu 
106*91f16700Schasinglulu #if PSCI_EXTENDED_STATE_ID
107*91f16700Schasinglulu /*
108*91f16700Schasinglulu  * Macros used to parse state information from State-ID if it is using the
109*91f16700Schasinglulu  * recommended encoding for State-ID.
110*91f16700Schasinglulu  */
111*91f16700Schasinglulu #define MTK_LOCAL_PSTATE_WIDTH		4
112*91f16700Schasinglulu #define MTK_LOCAL_PSTATE_MASK		((1 << MTK_LOCAL_PSTATE_WIDTH) - 1)
113*91f16700Schasinglulu 
114*91f16700Schasinglulu /* Macros to construct the composite power state */
115*91f16700Schasinglulu 
116*91f16700Schasinglulu /* Make composite power state parameter till power level 0 */
117*91f16700Schasinglulu 
118*91f16700Schasinglulu #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \
119*91f16700Schasinglulu 	(((lvl0_state) << PSTATE_ID_SHIFT) | ((type) << PSTATE_TYPE_SHIFT))
120*91f16700Schasinglulu #else
121*91f16700Schasinglulu #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \
122*91f16700Schasinglulu 		(((lvl0_state) << PSTATE_ID_SHIFT) | \
123*91f16700Schasinglulu 		((pwr_lvl) << PSTATE_PWR_LVL_SHIFT) | \
124*91f16700Schasinglulu 		((type) << PSTATE_TYPE_SHIFT))
125*91f16700Schasinglulu 
126*91f16700Schasinglulu #endif /* __PSCI_EXTENDED_STATE_ID__ */
127*91f16700Schasinglulu 
128*91f16700Schasinglulu /* Make composite power state parameter till power level 1 */
129*91f16700Schasinglulu #define mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type) \
130*91f16700Schasinglulu 		(((lvl1_state) << MTK_LOCAL_PSTATE_WIDTH) | \
131*91f16700Schasinglulu 		mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type))
132*91f16700Schasinglulu 
133*91f16700Schasinglulu /* Make composite power state parameter till power level 2 */
134*91f16700Schasinglulu #define mtk_make_pwrstate_lvl2( \
135*91f16700Schasinglulu 		lvl2_state, lvl1_state, lvl0_state, pwr_lvl, type) \
136*91f16700Schasinglulu 		(((lvl2_state) << (MTK_LOCAL_PSTATE_WIDTH * 2)) | \
137*91f16700Schasinglulu 		mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type))
138*91f16700Schasinglulu 
139*91f16700Schasinglulu 
140*91f16700Schasinglulu #endif /* MT8173_DEF_H */
141