xref: /arm-trusted-firmware/plat/mediatek/drivers/apusys/apusys_rv/2.0/apusys_rv.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2023, MediaTek Inc. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef APUSYS_RV_H
8*91f16700Schasinglulu #define APUSYS_RV_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <platform_def.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu #define APU_SEC_FW_IOVA			(0x200000UL)
13*91f16700Schasinglulu 
14*91f16700Schasinglulu /* APU_SCTRL_REVISER */
15*91f16700Schasinglulu #define UP_NORMAL_DOMAIN_NS		(APU_REVISER + 0x0000)
16*91f16700Schasinglulu #define UP_PRI_DOMAIN_NS		(APU_REVISER + 0x0004)
17*91f16700Schasinglulu #define UP_IOMMU_CTRL			(APU_REVISER + 0x0008)
18*91f16700Schasinglulu #define UP_CORE0_VABASE0		(APU_REVISER + 0x000c)
19*91f16700Schasinglulu #define UP_CORE0_MVABASE0		(APU_REVISER + 0x0010)
20*91f16700Schasinglulu #define UP_CORE0_VABASE1		(APU_REVISER + 0x0014)
21*91f16700Schasinglulu #define UP_CORE0_MVABASE1		(APU_REVISER + 0x0018)
22*91f16700Schasinglulu #define UP_CORE0_VABASE2		(APU_REVISER + 0x001c)
23*91f16700Schasinglulu #define UP_CORE0_MVABASE2		(APU_REVISER + 0x0020)
24*91f16700Schasinglulu #define UP_CORE0_VABASE3		(APU_REVISER + 0x0024)
25*91f16700Schasinglulu #define UP_CORE0_MVABASE3		(APU_REVISER + 0x0028)
26*91f16700Schasinglulu #define USERFW_CTXT			(APU_REVISER + 0x1000)
27*91f16700Schasinglulu #define SECUREFW_CTXT			(APU_REVISER + 0x1004)
28*91f16700Schasinglulu #define UP_NORMAL_DOMAIN		(7)
29*91f16700Schasinglulu #define UP_NORMAL_NS			(1)
30*91f16700Schasinglulu #define UP_PRI_DOMAIN			(5)
31*91f16700Schasinglulu #define UP_PRI_NS			(1)
32*91f16700Schasinglulu #define UP_DOMAIN_SHIFT			(0)
33*91f16700Schasinglulu #define UP_NS_SHIFT			(4)
34*91f16700Schasinglulu #define MMU_EN				BIT(0)
35*91f16700Schasinglulu #define MMU_CTRL			BIT(1)
36*91f16700Schasinglulu #define MMU_CTRL_LOCK			BIT(2)
37*91f16700Schasinglulu #define VLD				BIT(0)
38*91f16700Schasinglulu #define PARTIAL_ENABLE			BIT(1)
39*91f16700Schasinglulu #define THREAD_NUM_PRI			(1)
40*91f16700Schasinglulu #define THREAD_NUM_NORMAL		(0)
41*91f16700Schasinglulu #define THREAD_NUM_SHIFT		(2)
42*91f16700Schasinglulu #define VASIZE_1MB			BIT(0)
43*91f16700Schasinglulu #define CFG_4GB_SEL_EN			BIT(2)
44*91f16700Schasinglulu #define CFG_4GB_SEL			(0)
45*91f16700Schasinglulu #define MVA_34BIT_SHIFT			(2)
46*91f16700Schasinglulu 
47*91f16700Schasinglulu /* APU_MD32_SYSCTRL */
48*91f16700Schasinglulu #define MD32_SYS_CTRL			(APU_MD32_SYSCTRL + 0x0000)
49*91f16700Schasinglulu #define UP_INT_EN2			(APU_MD32_SYSCTRL + 0x000c)
50*91f16700Schasinglulu #define MD32_CLK_CTRL			(APU_MD32_SYSCTRL + 0x00b8)
51*91f16700Schasinglulu #define UP_WAKE_HOST_MASK0		(APU_MD32_SYSCTRL + 0x00bc)
52*91f16700Schasinglulu #define UP_WAKE_HOST_MASK1		(APU_MD32_SYSCTRL + 0x00c0)
53*91f16700Schasinglulu #define MD32_SYS_CTRL_RST		(0)
54*91f16700Schasinglulu #define MD32_G2B_CG_EN			BIT(11)
55*91f16700Schasinglulu #define MD32_DBG_EN			BIT(10)
56*91f16700Schasinglulu #define MD32_DM_AWUSER_IOMMU_EN		BIT(9)
57*91f16700Schasinglulu #define MD32_DM_ARUSER_IOMMU_EN		BIT(7)
58*91f16700Schasinglulu #define MD32_PM_AWUSER_IOMMU_EN		BIT(5)
59*91f16700Schasinglulu #define MD32_PM_ARUSER_IOMMU_EN		BIT(3)
60*91f16700Schasinglulu #define MD32_SOFT_RSTN			BIT(0)
61*91f16700Schasinglulu #define MD32_CLK_EN			(1)
62*91f16700Schasinglulu #define MD32_CLK_DIS			(0)
63*91f16700Schasinglulu #define WDT_IRQ_EN			BIT(0)
64*91f16700Schasinglulu #define MBOX0_IRQ_EN			BIT(21)
65*91f16700Schasinglulu #define MBOX1_IRQ_EN			BIT(22)
66*91f16700Schasinglulu #define MBOX2_IRQ_EN			BIT(23)
67*91f16700Schasinglulu #define RESET_DEALY_US			(10)
68*91f16700Schasinglulu #define DBG_APB_EN			BIT(31)
69*91f16700Schasinglulu 
70*91f16700Schasinglulu /* APU_AO_CTRL */
71*91f16700Schasinglulu #define MD32_PRE_DEFINE			(APU_AO_CTRL + 0x0000)
72*91f16700Schasinglulu #define MD32_BOOT_CTRL			(APU_AO_CTRL + 0x0004)
73*91f16700Schasinglulu #define MD32_RUNSTALL			(APU_AO_CTRL + 0x0008)
74*91f16700Schasinglulu #define PREDEFINE_NON_CACHE		(0)
75*91f16700Schasinglulu #define PREDEFINE_TCM			(1)
76*91f16700Schasinglulu #define PREDEFINE_CACHE			(2)
77*91f16700Schasinglulu #define PREDEFINE_CACHE_TCM		(3)
78*91f16700Schasinglulu #define PREDEF_1G_OFS			(0)
79*91f16700Schasinglulu #define PREDEF_2G_OFS			(2)
80*91f16700Schasinglulu #define PREDEF_3G_OFS			(4)
81*91f16700Schasinglulu #define PREDEF_4G_OFS			(6)
82*91f16700Schasinglulu #define MD32_RUN			(0)
83*91f16700Schasinglulu #define MD32_STALL			(1)
84*91f16700Schasinglulu 
85*91f16700Schasinglulu /* APU_MD32_WDT */
86*91f16700Schasinglulu #define WDT_INT				(APU_MD32_WDT + 0x0)
87*91f16700Schasinglulu #define WDT_CTRL0			(APU_MD32_WDT + 0x4)
88*91f16700Schasinglulu #define WDT_INT_W1C			(1)
89*91f16700Schasinglulu #define WDT_EN				BIT(31)
90*91f16700Schasinglulu 
91*91f16700Schasinglulu /* APU MBOX */
92*91f16700Schasinglulu #define MBOX_FUNC_CFG			(0xb0)
93*91f16700Schasinglulu #define MBOX_DOMAIN_CFG			(0xe0)
94*91f16700Schasinglulu #define MBOX_CTRL_LOCK			BIT(0)
95*91f16700Schasinglulu #define MBOX_NO_MPU_SHIFT		(16)
96*91f16700Schasinglulu #define MBOX_RX_NS_SHIFT		(16)
97*91f16700Schasinglulu #define MBOX_RX_DOMAIN_SHIFT		(17)
98*91f16700Schasinglulu #define MBOX_TX_NS_SHIFT		(24)
99*91f16700Schasinglulu #define MBOX_TX_DOMAIN_SHIFT		(25)
100*91f16700Schasinglulu #define MBOX_SIZE			(0x100)
101*91f16700Schasinglulu #define MBOX_NUM			(8)
102*91f16700Schasinglulu 
103*91f16700Schasinglulu #define APU_MBOX(i)		(((i) < MBOX_NUM) ? (APU_MBOX0 + MBOX_SIZE * (i)) : \
104*91f16700Schasinglulu 						  (APU_MBOX1 + MBOX_SIZE * ((i) - MBOX_NUM)))
105*91f16700Schasinglulu #define APU_MBOX_FUNC_CFG(i)	(APU_MBOX(i) + MBOX_FUNC_CFG)
106*91f16700Schasinglulu #define APU_MBOX_DOMAIN_CFG(i)	(APU_MBOX(i) + MBOX_DOMAIN_CFG)
107*91f16700Schasinglulu 
108*91f16700Schasinglulu void apusys_rv_mbox_mpu_init(void);
109*91f16700Schasinglulu int apusys_kernel_apusys_rv_setup_reviser(void);
110*91f16700Schasinglulu int apusys_kernel_apusys_rv_reset_mp(void);
111*91f16700Schasinglulu int apusys_kernel_apusys_rv_setup_boot(void);
112*91f16700Schasinglulu int apusys_kernel_apusys_rv_start_mp(void);
113*91f16700Schasinglulu int apusys_kernel_apusys_rv_stop_mp(void);
114*91f16700Schasinglulu int apusys_kernel_apusys_rv_setup_sec_mem(void);
115*91f16700Schasinglulu int apusys_kernel_apusys_rv_disable_wdt_isr(void);
116*91f16700Schasinglulu int apusys_kernel_apusys_rv_clear_wdt_isr(void);
117*91f16700Schasinglulu int apusys_kernel_apusys_rv_cg_gating(void);
118*91f16700Schasinglulu int apusys_kernel_apusys_rv_cg_ungating(void);
119*91f16700Schasinglulu 
120*91f16700Schasinglulu #endif /* APUSYS_RV_H */
121