1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include "n1sdp_scp_mmap.h"
9 #include "n1sdp_scp_system_mmap.h"
10 
11 #include <mod_armv7m_mpu.h>
12 
13 #include <fwk_macros.h>
14 #include <fwk_module.h>
15 
16 #include <fmw_cmsis.h>
17 
18 static const ARM_MPU_Region_t regions[] = {
19     { /* 0x0000_0000 - 0xFFFF_FFFF */
20         .RBAR = ARM_MPU_RBAR(0, 0x00000000),
21         .RASR = ARM_MPU_RASR(
22             1, ARM_MPU_AP_PRIV, 0, 1, 0, 1, 0, ARM_MPU_REGION_SIZE_4GB),
23     },
24     { /* 0x0080_0000 - 0x0088_0000 */
25         .RBAR = ARM_MPU_RBAR(1, SCP_RAM0_BASE),
26         .RASR = ARM_MPU_RASR(
27             0, ARM_MPU_AP_PRO, 0, 0, 1, 0, 0, ARM_MPU_REGION_SIZE_512KB),
28     },
29     { /* 0x2000_0000 - 0x2003_FFFF */
30         .RBAR = ARM_MPU_RBAR(2, SCP_RAM1_BASE),
31         .RASR = ARM_MPU_RASR(
32             1, ARM_MPU_AP_PRIV, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB),
33     },
34     { /* 0xA400_0000 - 0xA407_FFFF*/
35         .RBAR = ARM_MPU_RBAR(3, SCP_TRUSTED_RAM_BASE),
36         .RASR = ARM_MPU_RASR(
37             1, ARM_MPU_AP_PRIV, 0, 1, 1, 1, 0, ARM_MPU_REGION_SIZE_512KB),
38     },
39     { /* 0x6540_0000 - 0x6540_00FF */
40         .RBAR = ARM_MPU_RBAR(4, SCP_AP_SHARED_SECURE_RAM),
41         .RASR = ARM_MPU_RASR(
42             1, ARM_MPU_AP_PRIV, 0, 1, 1, 1, 0, ARM_MPU_REGION_SIZE_256B),
43     },
44     { /* 0x6520_0000 - 0x6520_FFFF */
45         .RBAR = ARM_MPU_RBAR(5, SCP_AP_SHARED_NONSECURE_RAM),
46         .RASR = ARM_MPU_RASR(
47             1, ARM_MPU_AP_PRIV, 0, 1, 1, 1, 0, ARM_MPU_REGION_SIZE_64KB),
48     },
49 };
50 
51 const struct fwk_module_config config_armv7m_mpu = {
52     .data = &((struct mod_armv7m_mpu_config){
53         .region_count = FWK_ARRAY_SIZE(regions),
54         .regions = regions,
55     }),
56 };
57