DEVAPC (device access permission control) is a MPU (memory protection unit) in MT8192. To restrict SCP accesses to a specific memory range, sets SCP to DEVAPC domain 3. ATF (Arm trusted firmware) should setup memory range for the domain. Co-developed-by: Tinghan Shen <tinghan.shen@xxxxxxxxxxxx> Signed-off-by: Tinghan Shen <tinghan.shen@xxxxxxxxxxxx> Signed-off-by: Tzung-Bi Shih <tzungbi@xxxxxxxxxx> --- Changes from v1: - Add "Co-developed-by" tag. drivers/remoteproc/mtk_common.h | 2 ++ drivers/remoteproc/mtk_scp.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/drivers/remoteproc/mtk_common.h b/drivers/remoteproc/mtk_common.h index 61901f5efa05..2aa9fdf5e59b 100644 --- a/drivers/remoteproc/mtk_common.h +++ b/drivers/remoteproc/mtk_common.h @@ -51,6 +51,8 @@ #define MT8192_CORE0_WDT_IRQ 0x10030 #define MT8192_CORE0_WDT_CFG 0x10034 +#define MT8192_SCP_DEVAPC_DOMAIN 0x85080 + #define SCP_FW_VER_LEN 32 #define SCP_SHARE_BUFFER_SIZE 288 diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c index 9679cc26895e..50bdec5a97e3 100644 --- a/drivers/remoteproc/mtk_scp.c +++ b/drivers/remoteproc/mtk_scp.c @@ -374,6 +374,9 @@ static int mt8192_scp_before_load(struct mtk_scp *scp) /* enable MPU for all memory regions */ writel(0xff, scp->reg_base + MT8192_CORE0_MEM_ATT_PREDEF); + /* set to DEVAPC (device access permission control) domain 3 */ + writel(3, scp->reg_base + MT8192_SCP_DEVAPC_DOMAIN); + return 0; } -- 2.31.0.rc2.261.g7f71774620-goog