mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-08-15 08:57:02 +02:00
A TZC400 controller is placed inline on DRAM channels and regulates the secure and non-secure accesses to both secure and non-secure regions of the DRAM memory. Configure each of the TZC controllers across the Chips. For use by secure software, configure the first chip's trustzone controller to protect the upper 16MB of the memory of the first DRAM block for secure accesses only. The other regions are configured for non-secure read write access. For all the remote chips, all the DRAM regions are allowed for non-secure read and write access. Signed-off-by: Aditya Angadi <aditya.angadi@arm.com> Change-Id: I809f27eccadfc23ea0ef64e2fd87f95eb8f195c1
65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 2020-2021, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <common/debug.h>
|
|
#include <plat/arm/common/plat_arm.h>
|
|
#include <platform_def.h>
|
|
|
|
/* TZC memory regions for the first chip */
|
|
static const arm_tzc_regions_info_t tzc_regions[] = {
|
|
ARM_TZC_REGIONS_DEF,
|
|
{}
|
|
};
|
|
|
|
#if CSS_SGI_CHIP_COUNT > 1
|
|
static const arm_tzc_regions_info_t tzc_regions_mc[][CSS_SGI_CHIP_COUNT - 1] = {
|
|
{
|
|
/* TZC memory regions for second chip */
|
|
SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(1),
|
|
{}
|
|
},
|
|
#if CSS_SGI_CHIP_COUNT > 2
|
|
{
|
|
/* TZC memory regions for third chip */
|
|
SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(2),
|
|
{}
|
|
},
|
|
#endif
|
|
#if CSS_SGI_CHIP_COUNT > 3
|
|
{
|
|
/* TZC memory regions for fourth chip */
|
|
SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(3),
|
|
{}
|
|
},
|
|
#endif
|
|
};
|
|
#endif /* CSS_SGI_CHIP_COUNT */
|
|
|
|
/* Initialize the secure environment */
|
|
void plat_arm_security_setup(void)
|
|
{
|
|
unsigned int i;
|
|
|
|
INFO("Configuring TrustZone Controller for Chip 0\n");
|
|
|
|
for (i = 0; i < TZC400_COUNT; i++) {
|
|
arm_tzc400_setup(TZC400_BASE(i), tzc_regions);
|
|
}
|
|
|
|
#if CSS_SGI_CHIP_COUNT > 1
|
|
unsigned int j;
|
|
|
|
for (i = 1; i < CSS_SGI_CHIP_COUNT; i++) {
|
|
INFO("Configuring TrustZone Controller for Chip %u\n", i);
|
|
|
|
for (j = 0; j < TZC400_COUNT; j++) {
|
|
arm_tzc400_setup(CSS_SGI_REMOTE_CHIP_MEM_OFFSET(i)
|
|
+ TZC400_BASE(j), tzc_regions_mc[i-1]);
|
|
}
|
|
}
|
|
#endif
|
|
}
|