From a564bdc551e1b542e3917d30f147c31c7cf56e2f Mon Sep 17 00:00:00 2001 From: Xi Chen Date: Wed, 6 Jan 2021 16:05:01 +0800 Subject: [PATCH] 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 Change-Id: Ic4f9e6d85bfd1cebdb24ffc1d14309c89c103b2a --- .../mediatek/mt8192/drivers/emi_mpu/emi_mpu.c | 33 ++++++++++++------- 1 file 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 d5d7e2e29..d9541bd43 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(®ion_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(®ion_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(®ion_info); dump_emi_mpu_regions();