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