xref: /arm-trusted-firmware/plat/arm/board/rdv1mc/rdv1mc_security.c (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2020-2021, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #include <common/debug.h>
8*91f16700Schasinglulu #include <plat/arm/common/plat_arm.h>
9*91f16700Schasinglulu #include <platform_def.h>
10*91f16700Schasinglulu 
11*91f16700Schasinglulu /* TZC memory regions for the first chip */
12*91f16700Schasinglulu static const arm_tzc_regions_info_t tzc_regions[] = {
13*91f16700Schasinglulu 	ARM_TZC_REGIONS_DEF,
14*91f16700Schasinglulu 	{}
15*91f16700Schasinglulu };
16*91f16700Schasinglulu 
17*91f16700Schasinglulu #if CSS_SGI_CHIP_COUNT > 1
18*91f16700Schasinglulu static const arm_tzc_regions_info_t tzc_regions_mc[][CSS_SGI_CHIP_COUNT - 1] = {
19*91f16700Schasinglulu 	{
20*91f16700Schasinglulu 		/* TZC memory regions for second chip */
21*91f16700Schasinglulu 		SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(1),
22*91f16700Schasinglulu 		{}
23*91f16700Schasinglulu 	},
24*91f16700Schasinglulu #if CSS_SGI_CHIP_COUNT > 2
25*91f16700Schasinglulu 	{
26*91f16700Schasinglulu 		/* TZC memory regions for third chip */
27*91f16700Schasinglulu 		SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(2),
28*91f16700Schasinglulu 		{}
29*91f16700Schasinglulu 	},
30*91f16700Schasinglulu #endif
31*91f16700Schasinglulu #if CSS_SGI_CHIP_COUNT > 3
32*91f16700Schasinglulu 	{
33*91f16700Schasinglulu 		/* TZC memory regions for fourth chip */
34*91f16700Schasinglulu 		SGI_PLAT_TZC_NS_REMOTE_REGIONS_DEF(3),
35*91f16700Schasinglulu 		{}
36*91f16700Schasinglulu 	},
37*91f16700Schasinglulu #endif
38*91f16700Schasinglulu };
39*91f16700Schasinglulu #endif /* CSS_SGI_CHIP_COUNT */
40*91f16700Schasinglulu 
41*91f16700Schasinglulu /* Initialize the secure environment */
42*91f16700Schasinglulu void plat_arm_security_setup(void)
43*91f16700Schasinglulu {
44*91f16700Schasinglulu 	unsigned int i;
45*91f16700Schasinglulu 
46*91f16700Schasinglulu 	INFO("Configuring TrustZone Controller for Chip 0\n");
47*91f16700Schasinglulu 
48*91f16700Schasinglulu 	for (i = 0; i < TZC400_COUNT; i++) {
49*91f16700Schasinglulu 		arm_tzc400_setup(TZC400_BASE(i), tzc_regions);
50*91f16700Schasinglulu 	}
51*91f16700Schasinglulu 
52*91f16700Schasinglulu #if CSS_SGI_CHIP_COUNT > 1
53*91f16700Schasinglulu 	unsigned int j;
54*91f16700Schasinglulu 
55*91f16700Schasinglulu 	for (i = 1; i < CSS_SGI_CHIP_COUNT; i++) {
56*91f16700Schasinglulu 		INFO("Configuring TrustZone Controller for Chip %u\n", i);
57*91f16700Schasinglulu 
58*91f16700Schasinglulu 		for (j = 0; j < TZC400_COUNT; j++) {
59*91f16700Schasinglulu 			arm_tzc400_setup(CSS_SGI_REMOTE_CHIP_MEM_OFFSET(i)
60*91f16700Schasinglulu 				+ TZC400_BASE(j), tzc_regions_mc[i-1]);
61*91f16700Schasinglulu 		}
62*91f16700Schasinglulu 	}
63*91f16700Schasinglulu #endif
64*91f16700Schasinglulu }
65