xref: /rk3399_ARM-atf/plat/mediatek/drivers/vcp/mt8196/vcp_reg.h (revision a1763ae97eab53476eef556a068de4bdf36b737a)
1*a1763ae9SXiangzhi Tang /*
2*a1763ae9SXiangzhi Tang  * Copyright (c) 2024, MediaTek Inc. All rights reserved.
3*a1763ae9SXiangzhi Tang  *
4*a1763ae9SXiangzhi Tang  * SPDX-License-Identifier: BSD-3-Clause
5*a1763ae9SXiangzhi Tang  */
6*a1763ae9SXiangzhi Tang 
7*a1763ae9SXiangzhi Tang #ifndef VCP_REG_H
8*a1763ae9SXiangzhi Tang #define VCP_REG_H
9*a1763ae9SXiangzhi Tang 
10*a1763ae9SXiangzhi Tang #include <platform_def.h>
11*a1763ae9SXiangzhi Tang 
12*a1763ae9SXiangzhi Tang #define MTK_VCP_REG_BASE		(IO_PHYS + 0x21800000)
13*a1763ae9SXiangzhi Tang #define MTK_VCP_REG_BANK_SIZE		(0x1000)
14*a1763ae9SXiangzhi Tang 
15*a1763ae9SXiangzhi Tang /*******************************************************************************
16*a1763ae9SXiangzhi Tang  * VCP power related setting
17*a1763ae9SXiangzhi Tang  ******************************************************************************/
18*a1763ae9SXiangzhi Tang #define VCP_POWER_STATUS		(0xE60)
19*a1763ae9SXiangzhi Tang #define MMUP_PWR_STA_BIT		(30)
20*a1763ae9SXiangzhi Tang #define MMUP_PWR_STA_EN			((uint32_t)(0x3))
21*a1763ae9SXiangzhi Tang 
22*a1763ae9SXiangzhi Tang /*******************************************************************************
23*a1763ae9SXiangzhi Tang  * VCP registers
24*a1763ae9SXiangzhi Tang  ******************************************************************************/
25*a1763ae9SXiangzhi Tang /* cfgreg */
26*a1763ae9SXiangzhi Tang #define VCP_R_CFGREG			(MTK_VCP_REG_BASE + 0x3d0000)
27*a1763ae9SXiangzhi Tang 
28*a1763ae9SXiangzhi Tang #define VCP_R_CORE0_SW_RSTN_CLR		(VCP_R_CFGREG + 0x0000)
29*a1763ae9SXiangzhi Tang #define VCP_R_CORE0_SW_RSTN_SET		(VCP_R_CFGREG + 0x0004)
30*a1763ae9SXiangzhi Tang #define VCP_R_CORE1_SW_RSTN_CLR		(VCP_R_CFGREG + 0x0008)
31*a1763ae9SXiangzhi Tang #define VCP_R_CORE1_SW_RSTN_SET		(VCP_R_CFGREG + 0x000c)
32*a1763ae9SXiangzhi Tang #define VCP_R_GIPC_IN_SET		(VCP_R_CFGREG + 0x0028)
33*a1763ae9SXiangzhi Tang #define VCP_R_GIPC_IN_CLR		(VCP_R_CFGREG + 0x002c)
34*a1763ae9SXiangzhi Tang #define B_GIPC3_SETCLR_1		BIT(13)
35*a1763ae9SXiangzhi Tang 
36*a1763ae9SXiangzhi Tang /* cfgreg_core0 */
37*a1763ae9SXiangzhi Tang #define VCP_R_CFGREG_CORE0		(MTK_VCP_REG_BASE + 0x20a000)
38*a1763ae9SXiangzhi Tang 
39*a1763ae9SXiangzhi Tang #define VCP_R_CORE0_STATUS		(VCP_R_CFGREG_CORE0 + 0x0070)
40*a1763ae9SXiangzhi Tang 
41*a1763ae9SXiangzhi Tang #define CORE0_R_GPR5			(VCP_R_CFGREG_CORE0 + 0x0054)
42*a1763ae9SXiangzhi Tang #define VCP_GPR_C0_H0_REBOOT		CORE0_R_GPR5
43*a1763ae9SXiangzhi Tang #define CORE0_R_GPR6			(VCP_R_CFGREG_CORE0 + 0x0058)
44*a1763ae9SXiangzhi Tang #define VCP_GPR_C0_H1_REBOOT		CORE0_R_GPR6
45*a1763ae9SXiangzhi Tang #define VCP_CORE_RDY_TO_REBOOT		(0x34)
46*a1763ae9SXiangzhi Tang #define VCP_CORE_REBOOT_OK		BIT(0)
47*a1763ae9SXiangzhi Tang 
48*a1763ae9SXiangzhi Tang /* cfgreg_core1 */
49*a1763ae9SXiangzhi Tang #define VCP_R_CFGREG_CORE1		(MTK_VCP_REG_BASE + 0x20d000)
50*a1763ae9SXiangzhi Tang 
51*a1763ae9SXiangzhi Tang #define VCP_R_CORE1_STATUS		(VCP_R_CFGREG_CORE1 + 0x0070)
52*a1763ae9SXiangzhi Tang #define CORE1_R_GPR5			(VCP_R_CFGREG_CORE1 + 0x0054)
53*a1763ae9SXiangzhi Tang #define VCP_GPR_CORE1_REBOOT		CORE1_R_GPR5
54*a1763ae9SXiangzhi Tang 
55*a1763ae9SXiangzhi Tang /* sec */
56*a1763ae9SXiangzhi Tang #define VCP_R_SEC_CTRL			(MTK_VCP_REG_BASE + 0x270000)
57*a1763ae9SXiangzhi Tang #define VCP_OFFSET_ENABLE_P		BIT(13)
58*a1763ae9SXiangzhi Tang #define VCP_OFFSET_ENABLE_B		BIT(12)
59*a1763ae9SXiangzhi Tang #define VCP_R_SEC_CTRL_2		(VCP_R_SEC_CTRL + 0x0004)
60*a1763ae9SXiangzhi Tang #define CORE0_SEC_BIT_SEL		BIT(0)
61*a1763ae9SXiangzhi Tang #define CORE1_SEC_BIT_SEL		BIT(8)
62*a1763ae9SXiangzhi Tang #define VCP_GPR0_CFGREG_SEC		(VCP_R_SEC_CTRL + 0x0040)
63*a1763ae9SXiangzhi Tang #define VCP_GPR1_CFGREG_SEC		(VCP_R_SEC_CTRL + 0x0044)
64*a1763ae9SXiangzhi Tang #define VCP_GPR2_CFGREG_SEC		(VCP_R_SEC_CTRL + 0x0048)
65*a1763ae9SXiangzhi Tang #define VCP_GPR3_CFGREG_SEC		(VCP_R_SEC_CTRL + 0x004C)
66*a1763ae9SXiangzhi Tang #define VCP_R_SEC_DOMAIN		(VCP_R_SEC_CTRL + 0x0080)
67*a1763ae9SXiangzhi Tang #define VCP_DOMAIN_ID			U(13)
68*a1763ae9SXiangzhi Tang #define VCP_DOMAIN_MASK			U(0xF)
69*a1763ae9SXiangzhi Tang #define VCP_CORE0_TH0_PM_AXI_DOMAIN	(0)
70*a1763ae9SXiangzhi Tang #define VCP_CORE0_TH0_DM_AXI_DOMAIN	(4)
71*a1763ae9SXiangzhi Tang #define VCP_S_DMA0_DOMAIN		(12)
72*a1763ae9SXiangzhi Tang #define VCP_HWCCF_DOMAIN		(16)
73*a1763ae9SXiangzhi Tang #define VCP_CORE0_TH1_PM_AXI_DOMAIN	(20)
74*a1763ae9SXiangzhi Tang #define VCP_CORE0_TH1_DM_AXI_DOMAIN	(24)
75*a1763ae9SXiangzhi Tang #define VCP_DOMAIN_SET			((VCP_DOMAIN_ID << VCP_CORE0_TH0_PM_AXI_DOMAIN) | \
76*a1763ae9SXiangzhi Tang 					 (VCP_DOMAIN_ID << VCP_CORE0_TH0_DM_AXI_DOMAIN) | \
77*a1763ae9SXiangzhi Tang 					 (VCP_DOMAIN_ID << VCP_CORE0_TH1_PM_AXI_DOMAIN) | \
78*a1763ae9SXiangzhi Tang 					 (VCP_DOMAIN_ID << VCP_CORE0_TH1_DM_AXI_DOMAIN) | \
79*a1763ae9SXiangzhi Tang 					 (VCP_DOMAIN_ID << VCP_S_DMA0_DOMAIN))
80*a1763ae9SXiangzhi Tang #define VCP_R_SEC_DOMAIN_MMPC		(VCP_R_SEC_CTRL + 0x0084)
81*a1763ae9SXiangzhi Tang #define VCP_CORE_MMPC_PM_AXI_DOMAIN	(0)
82*a1763ae9SXiangzhi Tang #define VCP_CORE_MMPC_DM_AXI_DOMAIN	(4)
83*a1763ae9SXiangzhi Tang #define VCP_DOMAIN_SET_MMPC		((VCP_DOMAIN_ID << VCP_CORE_MMPC_PM_AXI_DOMAIN) | \
84*a1763ae9SXiangzhi Tang 					(VCP_DOMAIN_ID << VCP_CORE_MMPC_DM_AXI_DOMAIN))
85*a1763ae9SXiangzhi Tang #define R_L2TCM_OFFSET_RANGE_0_LOW	(VCP_R_SEC_CTRL + 0x00B0)
86*a1763ae9SXiangzhi Tang #define R_L2TCM_OFFSET_RANGE_0_HIGH	(VCP_R_SEC_CTRL + 0x00B4)
87*a1763ae9SXiangzhi Tang #define R_L2TCM_OFFSET			(VCP_R_SEC_CTRL + 0x00D0)
88*a1763ae9SXiangzhi Tang #define VCP_R_DYN_SECURE		(VCP_R_SEC_CTRL + 0x01d0)
89*a1763ae9SXiangzhi Tang #define VCP_NS_I0			BIT(4)
90*a1763ae9SXiangzhi Tang #define VCP_NS_D0			BIT(6)
91*a1763ae9SXiangzhi Tang #define VCP_NS_SECURE_B_REGION_ENABLE	(24)
92*a1763ae9SXiangzhi Tang #define RESET_NS_SECURE_B_REGION	U(0xFF)
93*a1763ae9SXiangzhi Tang #define VCP_R_DYN_SECURE_TH1		(VCP_R_SEC_CTRL + 0x01d4)
94*a1763ae9SXiangzhi Tang #define VCP_NS_I1			BIT(5)
95*a1763ae9SXiangzhi Tang #define VCP_NS_D1			BIT(7)
96*a1763ae9SXiangzhi Tang #define VCP_R_S_DOM_EN0_31		(VCP_R_SEC_CTRL + 0x0200)
97*a1763ae9SXiangzhi Tang #define VCP_R_S_DOM_EN32_63		(VCP_R_SEC_CTRL + 0x0204)
98*a1763ae9SXiangzhi Tang #define VCP_R_NS_DOM_EN0_31		(VCP_R_SEC_CTRL + 0x0208)
99*a1763ae9SXiangzhi Tang #define VCP_R_NS_DOM_EN32_63		(VCP_R_SEC_CTRL + 0x020c)
100*a1763ae9SXiangzhi Tang /* IOMMU */
101*a1763ae9SXiangzhi Tang #define VCP_R_AXIOMMUEN_DEV_APC		(VCP_R_SEC_CTRL + 0x0088)
102*a1763ae9SXiangzhi Tang #define VCP_R_CFG_DEVAPC_AO_BASE	(MTK_VCP_REG_BASE + 0x2d0000)
103*a1763ae9SXiangzhi Tang 
104*a1763ae9SXiangzhi Tang #endif /* VCP_REG_H */
105