summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Chen <jason-ch.chen@mediatek.corp-partner.google.com>2023-06-06 16:28:19 +0800
committerJason Chen <Jason-ch.Chen@mediatek.com>2023-10-11 17:21:03 +0800
commit013006f1f889f5869502147af464e38619459463 (patch)
treea6b495432e7400e44e5ff39a97bb1c19e8c57765
parenta05414bedc9b1cc35cf0795ce641b6b4db5bc97e (diff)
feat(mt8188): add EMI MPU support for SCP and DSP
1. Allow domain D8 (SCP c0) access to the region 0x50000000~0x528FFFFF. 2. Allow domain D8 (SCP c1) access to the region 0x70000000~0x729FFFFF. 3. Allow domain D4 (DSP) access to the region 0x60000000~0x610FFFFF. Change-Id: Iea92eebaea4d7dd2968cf51f41d07c2479168e7e Signed-off-by: Jason Chen <Jason-ch.Chen@mediatek.com>
-rw-r--r--plat/mediatek/drivers/emi_mpu/mt8188/emi_mpu.c47
1 files changed, 45 insertions, 2 deletions
diff --git a/plat/mediatek/drivers/emi_mpu/mt8188/emi_mpu.c b/plat/mediatek/drivers/emi_mpu/mt8188/emi_mpu.c
index ae1b7ef67..e8882f070 100644
--- a/plat/mediatek/drivers/emi_mpu/mt8188/emi_mpu.c
+++ b/plat/mediatek/drivers/emi_mpu/mt8188/emi_mpu.c
@@ -12,8 +12,51 @@
void set_emi_mpu_regions(void)
{
- /* TODO: set emi mpu region */
- INFO("%s, emi mpu is not setting currently\n", __func__);
+ struct emi_region_info_t region_info;
+
+ /* SCP core0 DRAM */
+ region_info.start = 0x50000000ULL;
+ region_info.end = 0x528FFFFFULL;
+ region_info.region = 2;
+ SET_ACCESS_PERMISSION(region_info.apc, 1,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION);
+ emi_mpu_set_protection(&region_info);
+
+ /* SCP core1 DRAM */
+ region_info.start = 0x70000000ULL;
+ region_info.end = 0x729FFFFFULL;
+ region_info.region = 3;
+ SET_ACCESS_PERMISSION(region_info.apc, 1,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION);
+ emi_mpu_set_protection(&region_info);
+
+ /* DSP protect address */
+ region_info.start = 0x60000000ULL;
+ region_info.end = 0x610FFFFFULL;
+ region_info.region = 4;
+ SET_ACCESS_PERMISSION(region_info.apc, 1,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION);
+ emi_mpu_set_protection(&region_info);
+
+ /* All default settings */
+ region_info.start = 0x40000000ULL;
+ region_info.end = 0x1FFFF0000ULL;
+ region_info.region = 31;
+ SET_ACCESS_PERMISSION(region_info.apc, 1,
+ FORBIDDEN, FORBIDDEN, NO_PROTECTION, NO_PROTECTION,
+ NO_PROTECTION, FORBIDDEN, NO_PROTECTION, NO_PROTECTION,
+ NO_PROTECTION, SEC_R_NSEC_RW, NO_PROTECTION, FORBIDDEN,
+ NO_PROTECTION, NO_PROTECTION, NO_PROTECTION, NO_PROTECTION);
+ emi_mpu_set_protection(&region_info);
}
int set_apu_emi_mpu_region(void)