aboutsummaryrefslogtreecommitdiff
path: root/plat/mediatek
diff options
context:
space:
mode:
authorXi Chen <xixi.chen@mediatek.com>2021-01-06 16:05:01 +0800
committerYidi Lin <yidi.lin@mediatek.com>2021-03-03 19:07:45 +0800
commita564bdc551e1b542e3917d30f147c31c7cf56e2f (patch)
tree4301690964f0d9b01e67a8f853eb69e488ec3a74 /plat/mediatek
parentf3febcca5a6f027c6115454b779fce8c71917ac0 (diff)
downloadtrusted-firmware-a-a564bdc551e1b542e3917d30f147c31c7cf56e2f.tar.gz
mediatek: mt8192: Add MPU Support for SCP/PCIe
1 Only enable domain D0 and D1:PCIe access 0xC0000000~0xC4000000; 2 Only enable domain D0 and D3(SCP) access 0x50000000~0x51400000; Signed-off-by: Xi Chen <xixi.chen@mediatek.com> Change-Id: Ic4f9e6d85bfd1cebdb24ffc1d14309c89c103b2a
Diffstat (limited to 'plat/mediatek')
-rw-r--r--plat/mediatek/mt8192/drivers/emi_mpu/emi_mpu.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/plat/mediatek/mt8192/drivers/emi_mpu/emi_mpu.c b/plat/mediatek/mt8192/drivers/emi_mpu/emi_mpu.c
index d5d7e2e293..d9541bd43a 100644
--- a/plat/mediatek/mt8192/drivers/emi_mpu/emi_mpu.c
+++ b/plat/mediatek/mt8192/drivers/emi_mpu/emi_mpu.c
@@ -91,30 +91,41 @@ int emi_mpu_set_protection(struct emi_region_info_t *region_info)
void emi_mpu_init(void)
{
- /* Set permission */
struct emi_region_info_t region_info;
- /* PCE-e protect address(TODO) */
- region_info.start = 0x80000000ULL;
- region_info.end = 0x83FF0000ULL;
+ /* reserve region 0 for future use */
+
+ /* PCI-e protect address(64MB) */
+ region_info.start = 0xC0000000ULL;
+ region_info.end = 0xC3FF0000ULL;
region_info.region = 1;
SET_ACCESS_PERMISSION(region_info.apc, 1,
FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
- FORBIDDEN, FORBIDDEN, NO_PROT,
- NO_PROT /*FORBIDDEN*/);
+ FORBIDDEN, FORBIDDEN, NO_PROT, NO_PROT);
+ emi_mpu_set_protection(&region_info);
+
+ /* SCP protect address */
+ region_info.start = 0x50000000ULL;
+ region_info.end = 0x513F0000ULL;
+ region_info.region = 2;
+ SET_ACCESS_PERMISSION(region_info.apc, 1,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ NO_PROT, FORBIDDEN, FORBIDDEN, NO_PROT);
emi_mpu_set_protection(&region_info);
/* Forbidden All */
region_info.start = 0x40000000ULL; /* dram base addr */
region_info.end = 0x1FFFF0000ULL;
- region_info.region = 2;
+ region_info.region = 3;
SET_ACCESS_PERMISSION(region_info.apc, 1,
- NO_PROT, NO_PROT, NO_PROT, NO_PROT,
- NO_PROT, NO_PROT, NO_PROT, NO_PROT,
- NO_PROT, NO_PROT, NO_PROT, NO_PROT,
- NO_PROT, FORBIDDEN, NO_PROT, NO_PROT);
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN,
+ FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROT);
emi_mpu_set_protection(&region_info);
dump_emi_mpu_regions();