diff options
author | Tamas Kaman <tamas.kaman@arm.com> | 2019-07-29 12:56:27 +0200 |
---|---|---|
committer | Máté Tóth-Pál <Mate.Toth-Pal@arm.com> | 2019-07-30 11:35:53 +0000 |
commit | a55506889adfa10d64d217539166afd231624018 (patch) | |
tree | 2b378b61fa7ec5cc80a16748f272af18e2b51849 | |
parent | 3ad2e3e2b07f260087034025f237e44ae23bb771 (diff) | |
download | trusted-firmware-m-a55506889adfa10d64d217539166afd231624018.tar.gz |
Fix AN524 MPC and PPC init sequence
Both MPC and PPC driver needs initialization before any other API is
called. This was missing in several cases which caused AN524 platform
init to fail.
Change-Id: I034d8959f3bda46446f907cd775b44538d90f954
Signed-off-by: Tamas Kaman <tamas.kaman@arm.com>
-rw-r--r-- | platform/ext/target/mps3/an524/target_cfg.c | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/platform/ext/target/mps3/an524/target_cfg.c b/platform/ext/target/mps3/an524/target_cfg.c index 8aded94fc5..e8a01b20da 100644 --- a/platform/ext/target/mps3/an524/target_cfg.c +++ b/platform/ext/target/mps3/an524/target_cfg.c @@ -333,7 +333,47 @@ int32_t mpc_init_cfg(void) } #endif /* BL2 */ - /* NSPE use the last 32KB(ISARM 3) */ + /* SPE uses the first 96kB (3 ISRAM banks) for data */ + ret = Driver_ISRAM0_MPC.Initialize(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM0_MPC.ConfigRegion( + MPC_ISRAM0_RANGE_BASE_S, + MPC_ISRAM0_RANGE_LIMIT_S, + ARM_MPC_ATTR_SECURE); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM1_MPC.Initialize(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM1_MPC.ConfigRegion( + MPC_ISRAM1_RANGE_BASE_S, + MPC_ISRAM1_RANGE_LIMIT_S, + ARM_MPC_ATTR_SECURE); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM2_MPC.Initialize(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM2_MPC.ConfigRegion( + MPC_ISRAM2_RANGE_BASE_S, + MPC_ISRAM2_RANGE_LIMIT_S, + ARM_MPC_ATTR_SECURE); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + /* NSPE use the last 32KB (ISRAM 3) */ ret = Driver_ISRAM3_MPC.Initialize(); if (ret != ARM_DRIVER_OK) { return ret; @@ -353,6 +393,16 @@ int32_t mpc_init_cfg(void) return ret; } + ret = Driver_ISRAM0_MPC.LockDown(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + + ret = Driver_ISRAM1_MPC.LockDown(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + ret = Driver_ISRAM2_MPC.LockDown(); if (ret != ARM_DRIVER_OK) { return ret; @@ -435,6 +485,14 @@ int32_t ppc_init_cfg(void) return ret; } + /* No peripherals are configured on APB PPC EXP0 but device needs to be + * initialialized so that the interrupt can be enabled later. + */ + ret = Driver_APB_PPCEXP0.Initialize(); + if (ret != ARM_DRIVER_OK) { + return ret; + } + /* Grant non-secure access for APB peripherals on EXP1 */ ret = Driver_APB_PPCEXP1.Initialize(); if (ret != ARM_DRIVER_OK) { |