From 3d4b6f932444c7b0f70f8654b92193b294527056 Mon Sep 17 00:00:00 2001 From: Allen-KH Cheng Date: Mon, 12 Sep 2022 17:10:24 +0800 Subject: [PATCH] feat(mt8186): add EMI MPU support for SCP and DSP 1. Enable domain D0 and D3 (SCP) access 0x50000000~0x5109FFFF. 2. Enable domain D4 (DSP & AFE) access 0x60000000~0x610FFFFF. BUG=b:204229221 TEST=build pass Signed-off-by: Allen-KH Cheng Change-Id: I6a7d2eafaaa7a558829a0d741dfb3307885e3b98 --- .../mediatek/mt8186/drivers/emi_mpu/emi_mpu.c | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/plat/mediatek/mt8186/drivers/emi_mpu/emi_mpu.c b/plat/mediatek/mt8186/drivers/emi_mpu/emi_mpu.c index 989ecf199..a183483ee 100644 --- a/plat/mediatek/mt8186/drivers/emi_mpu/emi_mpu.c +++ b/plat/mediatek/mt8186/drivers/emi_mpu/emi_mpu.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2021-2022, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -96,5 +96,38 @@ int emi_mpu_set_protection(struct emi_region_info_t *region_info) void emi_mpu_init(void) { - /* TODO: more setting for EMI MPU. */ + struct emi_region_info_t region_info; + + /* SCP DRAM */ + region_info.start = 0x50000000ULL; + region_info.end = 0x5109FFFFULL; + region_info.region = 2; + SET_ACCESS_PERMISSION(region_info.apc, 1, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + NO_PROTECTION, FORBIDDEN, FORBIDDEN, NO_PROTECTION); + emi_mpu_set_protection(®ion_info); + + /* DSP protect address */ + region_info.start = 0x60000000ULL; /* dram base addr */ + region_info.end = 0x610FFFFFULL; + region_info.region = 3; + 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(®ion_info); + + /* Forbidden All */ + region_info.start = 0x40000000ULL; /* dram base addr */ + region_info.end = 0x1FFFF0000ULL; + region_info.region = 4; + SET_ACCESS_PERMISSION(region_info.apc, 1, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + FORBIDDEN, FORBIDDEN, FORBIDDEN, FORBIDDEN, + FORBIDDEN, FORBIDDEN, FORBIDDEN, NO_PROTECTION); + emi_mpu_set_protection(®ion_info); } -- 2.39.5