xref: /rk3399_ARM-atf/plat/mediatek/mt8173/include/mt8173_def.h (revision 1e81e9a4c7d96df1fc0edafb5b332aab0b61932d)
1e2a65959SJimmy Huang /*
2e2a65959SJimmy Huang  * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
3e2a65959SJimmy Huang  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5e2a65959SJimmy Huang  */
6e2a65959SJimmy Huang 
7*c3cf06f1SAntonio Nino Diaz #ifndef MT8173_DEF_H
8*c3cf06f1SAntonio Nino Diaz #define MT8173_DEF_H
9e2a65959SJimmy Huang 
10e2a65959SJimmy Huang #if RESET_TO_BL31
11e2a65959SJimmy Huang #error "MT8173 is incompatible with RESET_TO_BL31!"
12e2a65959SJimmy Huang #endif
13e2a65959SJimmy Huang 
14e2a65959SJimmy Huang #define MT8173_PRIMARY_CPU	0x0
15e2a65959SJimmy Huang 
16e2a65959SJimmy Huang /* Register base address */
17e2a65959SJimmy Huang #define IO_PHYS			(0x10000000)
18e2a65959SJimmy Huang #define INFRACFG_AO_BASE	(IO_PHYS + 0x1000)
19a1e0c01fSJimmy Huang #define SRAMROM_SEC_BASE	(IO_PHYS + 0x1800)
20e2a65959SJimmy Huang #define PERI_CON_BASE		(IO_PHYS + 0x3000)
21e2a65959SJimmy Huang #define GPIO_BASE		(IO_PHYS + 0x5000)
22e2a65959SJimmy Huang #define SPM_BASE		(IO_PHYS + 0x6000)
23e2a65959SJimmy Huang #define RGU_BASE		(IO_PHYS + 0x7000)
24e2a65959SJimmy Huang #define PMIC_WRAP_BASE		(IO_PHYS + 0xD000)
25a1e0c01fSJimmy Huang #define DEVAPC0_BASE		(IO_PHYS + 0xE000)
26e2a65959SJimmy Huang #define MCUCFG_BASE		(IO_PHYS + 0x200000)
27b99d961cSJimmy Huang #define APMIXED_BASE		(IO_PHYS + 0x209000)
28e2a65959SJimmy Huang #define TRNG_BASE		(IO_PHYS + 0x20F000)
297ace1cc0SYi Zheng #define CRYPT_BASE		(IO_PHYS + 0x210000)
30e2a65959SJimmy Huang #define MT_GIC_BASE		(IO_PHYS + 0x220000)
31e2a65959SJimmy Huang #define PLAT_MT_CCI_BASE	(IO_PHYS + 0x390000)
32e2a65959SJimmy Huang 
33e2a65959SJimmy Huang /* Aggregate of all devices in the first GB */
34e2a65959SJimmy Huang #define MTK_DEV_RNG0_BASE	IO_PHYS
35e2a65959SJimmy Huang #define MTK_DEV_RNG0_SIZE	0x400000
36e2a65959SJimmy Huang #define MTK_DEV_RNG1_BASE	(IO_PHYS + 0x1000000)
37e2a65959SJimmy Huang #define MTK_DEV_RNG1_SIZE	0x4000000
38e2a65959SJimmy Huang 
39a1e0c01fSJimmy Huang /* SRAMROM related registers */
40a1e0c01fSJimmy Huang #define SRAMROM_SEC_CTRL	(SRAMROM_SEC_BASE + 0x4)
41a1e0c01fSJimmy Huang #define SRAMROM_SEC_ADDR	(SRAMROM_SEC_BASE + 0x8)
42a1e0c01fSJimmy Huang 
43a1e0c01fSJimmy Huang /* DEVAPC0 related registers */
44a1e0c01fSJimmy Huang #define DEVAPC0_MAS_SEC_0	(DEVAPC0_BASE + 0x500)
45a1e0c01fSJimmy Huang #define DEVAPC0_APC_CON		(DEVAPC0_BASE + 0xF00)
46a1e0c01fSJimmy Huang 
47e2a65959SJimmy Huang /*******************************************************************************
48e2a65959SJimmy Huang  * UART related constants
49e2a65959SJimmy Huang  ******************************************************************************/
50e2a65959SJimmy Huang #define MT8173_UART0_BASE	(IO_PHYS + 0x01002000)
51e2a65959SJimmy Huang #define MT8173_UART1_BASE	(IO_PHYS + 0x01003000)
52e2a65959SJimmy Huang #define MT8173_UART2_BASE	(IO_PHYS + 0x01004000)
53e2a65959SJimmy Huang #define MT8173_UART3_BASE	(IO_PHYS + 0x01005000)
54e2a65959SJimmy Huang 
55e2a65959SJimmy Huang #define MT8173_BAUDRATE		(115200)
56e2a65959SJimmy Huang #define MT8173_UART_CLOCK	(26000000)
57e2a65959SJimmy Huang 
58e2a65959SJimmy Huang /*******************************************************************************
59e2a65959SJimmy Huang  * System counter frequency related constants
60e2a65959SJimmy Huang  ******************************************************************************/
61e2a65959SJimmy Huang #define SYS_COUNTER_FREQ_IN_TICKS	13000000
62e2a65959SJimmy Huang 
63e2a65959SJimmy Huang /*******************************************************************************
64e2a65959SJimmy Huang  * GIC-400 & interrupt handling related constants
65e2a65959SJimmy Huang  ******************************************************************************/
66e2a65959SJimmy Huang 
67e2a65959SJimmy Huang /* Base MTK_platform compatible GIC memory map */
68e2a65959SJimmy Huang #define BASE_GICD_BASE		(MT_GIC_BASE + 0x1000)
69e2a65959SJimmy Huang #define BASE_GICC_BASE		(MT_GIC_BASE + 0x2000)
70e2a65959SJimmy Huang #define BASE_GICR_BASE		0	/* no GICR in GIC-400 */
71e2a65959SJimmy Huang #define BASE_GICH_BASE		(MT_GIC_BASE + 0x4000)
72e2a65959SJimmy Huang #define BASE_GICV_BASE		(MT_GIC_BASE + 0x6000)
73e2a65959SJimmy Huang #define INT_POL_CTL0		0x10200620
74e2a65959SJimmy Huang 
75e2a65959SJimmy Huang #define GIC_PRIVATE_SIGNALS	(32)
76e2a65959SJimmy Huang 
77e2a65959SJimmy Huang /*******************************************************************************
78e2a65959SJimmy Huang  * CCI-400 related constants
79e2a65959SJimmy Huang  ******************************************************************************/
80e2a65959SJimmy Huang #define PLAT_MT_CCI_CLUSTER0_SL_IFACE_IX	4
81e2a65959SJimmy Huang #define PLAT_MT_CCI_CLUSTER1_SL_IFACE_IX	3
82e2a65959SJimmy Huang 
83e2a65959SJimmy Huang /* FIQ platform related define */
84e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_0	8
85e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_1	9
86e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_2	10
87e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_3	11
88e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_4	12
89e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_5	13
90e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_6	14
91e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_7	15
92e2a65959SJimmy Huang 
933fc26aa0SKoan-Sin Tan /*
943fc26aa0SKoan-Sin Tan  *  Macros for local power states in MTK platforms encoded by State-ID field
953fc26aa0SKoan-Sin Tan  *  within the power-state parameter.
963fc26aa0SKoan-Sin Tan  */
973fc26aa0SKoan-Sin Tan /* Local power state for power domains in Run state. */
983fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RUN     0
993fc26aa0SKoan-Sin Tan /* Local power state for retention. Valid only for CPU power domains */
1003fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RET     1
1013fc26aa0SKoan-Sin Tan /* Local power state for OFF/power-down. Valid for CPU and cluster power
1023fc26aa0SKoan-Sin Tan  * domains
1033fc26aa0SKoan-Sin Tan  */
1043fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_OFF     2
1053fc26aa0SKoan-Sin Tan 
1069cfd83e9SKoan-Sin Tan #if PSCI_EXTENDED_STATE_ID
1079cfd83e9SKoan-Sin Tan /*
1089cfd83e9SKoan-Sin Tan  * Macros used to parse state information from State-ID if it is using the
1099cfd83e9SKoan-Sin Tan  * recommended encoding for State-ID.
1109cfd83e9SKoan-Sin Tan  */
1119cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_WIDTH		4
1129cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_MASK		((1 << MTK_LOCAL_PSTATE_WIDTH) - 1)
1139cfd83e9SKoan-Sin Tan 
1149cfd83e9SKoan-Sin Tan /* Macros to construct the composite power state */
1159cfd83e9SKoan-Sin Tan 
1169cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 0 */
1179cfd83e9SKoan-Sin Tan 
1189cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \
1199cfd83e9SKoan-Sin Tan 	(((lvl0_state) << PSTATE_ID_SHIFT) | ((type) << PSTATE_TYPE_SHIFT))
1209cfd83e9SKoan-Sin Tan #else
1219cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \
1229cfd83e9SKoan-Sin Tan 		(((lvl0_state) << PSTATE_ID_SHIFT) | \
1239cfd83e9SKoan-Sin Tan 		((pwr_lvl) << PSTATE_PWR_LVL_SHIFT) | \
1249cfd83e9SKoan-Sin Tan 		((type) << PSTATE_TYPE_SHIFT))
1259cfd83e9SKoan-Sin Tan 
1269cfd83e9SKoan-Sin Tan #endif /* __PSCI_EXTENDED_STATE_ID__ */
1279cfd83e9SKoan-Sin Tan 
1289cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 1 */
1299cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type) \
1309cfd83e9SKoan-Sin Tan 		(((lvl1_state) << MTK_LOCAL_PSTATE_WIDTH) | \
1319cfd83e9SKoan-Sin Tan 		mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type))
1329cfd83e9SKoan-Sin Tan 
1339cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 2 */
1349cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl2( \
1359cfd83e9SKoan-Sin Tan 		lvl2_state, lvl1_state, lvl0_state, pwr_lvl, type) \
1369cfd83e9SKoan-Sin Tan 		(((lvl2_state) << (MTK_LOCAL_PSTATE_WIDTH * 2)) | \
1379cfd83e9SKoan-Sin Tan 		mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type))
1389cfd83e9SKoan-Sin Tan 
1399cfd83e9SKoan-Sin Tan 
140*c3cf06f1SAntonio Nino Diaz #endif /* MT8173_DEF_H */
141