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