xref: /arm-trusted-firmware/plat/renesas/common/bl2_secure_setting.c (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2015-2021, Renesas Electronics Corporation. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #include <lib/mmio.h>
8*91f16700Schasinglulu #include <lib/utils_def.h>
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include "axi_registers.h"
11*91f16700Schasinglulu #include "lifec_registers.h"
12*91f16700Schasinglulu #include "micro_delay.h"
13*91f16700Schasinglulu 
14*91f16700Schasinglulu static void lifec_security_setting(void);
15*91f16700Schasinglulu static void axi_security_setting(void);
16*91f16700Schasinglulu 
17*91f16700Schasinglulu static const struct {
18*91f16700Schasinglulu 	uint32_t reg;
19*91f16700Schasinglulu 	uint32_t val;
20*91f16700Schasinglulu } lifec[] = {
21*91f16700Schasinglulu 	/*
22*91f16700Schasinglulu 	 * LIFEC0 (SECURITY) settings
23*91f16700Schasinglulu 	 * Security attribute setting for master ports
24*91f16700Schasinglulu 	 * Bit 0: ARM realtime core (Cortex-R7) master port
25*91f16700Schasinglulu 	 *        0: Non-Secure
26*91f16700Schasinglulu 	 */
27*91f16700Schasinglulu 	{ SEC_SRC, 0x0000001EU },
28*91f16700Schasinglulu 	/*
29*91f16700Schasinglulu 	 * Security attribute setting for slave ports 0 to 15
30*91f16700Schasinglulu 	 *      {SEC_SEL0,              0xFFFFFFFFU},
31*91f16700Schasinglulu 	 *      {SEC_SEL1,              0xFFFFFFFFU},
32*91f16700Schasinglulu 	 *	{SEC_SEL2,              0xFFFFFFFFU},
33*91f16700Schasinglulu 	 * Bit19: AXI-Bus (Main Memory domain AXI) slave ports
34*91f16700Schasinglulu 	 *        0: registers accessed from secure resource only
35*91f16700Schasinglulu 	 * Bit 9: DBSC4 register access slave ports.
36*91f16700Schasinglulu 	 *        0: registers accessed from secure resource only.
37*91f16700Schasinglulu 	 */
38*91f16700Schasinglulu #if (LIFEC_DBSC_PROTECT_ENABLE == 1)
39*91f16700Schasinglulu 	{ SEC_SEL3, 0xFFF7FDFFU },
40*91f16700Schasinglulu #else /* LIFEC_DBSC_PROTECT_ENABLE == 1 */
41*91f16700Schasinglulu 	{ SEC_SEL3, 0xFFFFFFFFU },
42*91f16700Schasinglulu #endif /* LIFEC_DBSC_PROTECT_ENABLE == 1 */
43*91f16700Schasinglulu 	/*
44*91f16700Schasinglulu 	 *	{SEC_SEL4,              0xFFFFFFFFU},
45*91f16700Schasinglulu 	 * Bit 6: Boot ROM slave ports.
46*91f16700Schasinglulu 	 *        0: registers accessed from secure resource only
47*91f16700Schasinglulu 	 */
48*91f16700Schasinglulu 	{ SEC_SEL5, 0xFFFFFFBFU },
49*91f16700Schasinglulu 	/*
50*91f16700Schasinglulu 	 * Bit13: SCEG PKA (secure APB) slave ports
51*91f16700Schasinglulu 	 *        0: registers accessed from secure resource only
52*91f16700Schasinglulu 	 *        1: Reserved[R-Car E3/D3]
53*91f16700Schasinglulu 	 * Bit12: SCEG PKA (public APB) slave ports
54*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
55*91f16700Schasinglulu 	 *	  1: Reserved[R-Car E3/D3]
56*91f16700Schasinglulu 	 * Bit10: SCEG Secure Core slave ports
57*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
58*91f16700Schasinglulu 	 */
59*91f16700Schasinglulu #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3)
60*91f16700Schasinglulu 	{ SEC_SEL6, 0xFFFFFBFFU },
61*91f16700Schasinglulu #else /*  (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) */
62*91f16700Schasinglulu 	{ SEC_SEL6, 0xFFFFCBFFU },
63*91f16700Schasinglulu #endif /*  (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) */
64*91f16700Schasinglulu 	/*
65*91f16700Schasinglulu 	 *	{SEC_SEL7,              0xFFFFFFFFU},
66*91f16700Schasinglulu 	 *	{SEC_SEL8,              0xFFFFFFFFU},
67*91f16700Schasinglulu 	 *	{SEC_SEL9,              0xFFFFFFFFU},
68*91f16700Schasinglulu 	 *	{SEC_SEL10,             0xFFFFFFFFU},
69*91f16700Schasinglulu 	 *	{SEC_SEL11,             0xFFFFFFFFU},
70*91f16700Schasinglulu 	 *	{SEC_SEL12,             0xFFFFFFFFU},
71*91f16700Schasinglulu 	 * Bit22: RPC slave ports.
72*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only.
73*91f16700Schasinglulu 	 */
74*91f16700Schasinglulu #if (RCAR_RPC_HYPERFLASH_LOCKED == 1)
75*91f16700Schasinglulu 	{ SEC_SEL13, 0xFFBFFFFFU },
76*91f16700Schasinglulu #endif /* (RCAR_RPC_HYPERFLASH_LOCKED == 1) */
77*91f16700Schasinglulu 	/*
78*91f16700Schasinglulu 	 * Bit27: System Timer (SCMT) slave ports
79*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
80*91f16700Schasinglulu 	 * Bit26: System Watchdog Timer (SWDT) slave ports
81*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
82*91f16700Schasinglulu 	 */
83*91f16700Schasinglulu 	{ SEC_SEL14, 0xF3FFFFFFU },
84*91f16700Schasinglulu 	/*
85*91f16700Schasinglulu 	 * Bit13: RST slave ports.
86*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
87*91f16700Schasinglulu 	 * Bit 7: Life Cycle 0 slave ports
88*91f16700Schasinglulu 	 *	  0: registers accessed from secure resource only
89*91f16700Schasinglulu 	 */
90*91f16700Schasinglulu 	{ SEC_SEL15, 0xFFFFFF3FU },
91*91f16700Schasinglulu 	/*
92*91f16700Schasinglulu 	 * Security group 0 attribute setting for master ports 0
93*91f16700Schasinglulu 	 * Security group 1 attribute setting for master ports 0
94*91f16700Schasinglulu 	 *	{SEC_GRP0CR0,           0x00000000U},
95*91f16700Schasinglulu 	 *	{SEC_GRP1CR0,           0x00000000U},
96*91f16700Schasinglulu 	 * Security group 0 attribute setting for master ports 1
97*91f16700Schasinglulu 	 * Security group 1 attribute setting for master ports 1
98*91f16700Schasinglulu 	 *	{SEC_GRP0CR1,           0x00000000U},
99*91f16700Schasinglulu 	 *	{SEC_GRP1CR1,           0x00000000U},
100*91f16700Schasinglulu 	 * Security group 0 attribute setting for master ports 2
101*91f16700Schasinglulu 	 * Security group 1 attribute setting for master ports 2
102*91f16700Schasinglulu 	 * Bit17: SCEG Secure Core master ports.
103*91f16700Schasinglulu 	 *	  SecurityGroup3
104*91f16700Schasinglulu 	 */
105*91f16700Schasinglulu 	{ SEC_GRP0CR2, 0x00020000U },
106*91f16700Schasinglulu 	{ SEC_GRP1CR2, 0x00020000U },
107*91f16700Schasinglulu 	/*
108*91f16700Schasinglulu 	 * Security group 0 attribute setting for master ports 3
109*91f16700Schasinglulu 	 * Security group 1 attribute setting for master ports 3
110*91f16700Schasinglulu 	 *	{SEC_GRP0CR3,           0x00000000U},
111*91f16700Schasinglulu 	 *	{SEC_GRP1CR3,           0x00000000U},
112*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 0
113*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 0
114*91f16700Schasinglulu 	 *	{SEC_GRP0COND0,         0x00000000U},
115*91f16700Schasinglulu 	 *	{SEC_GRP1COND0,         0x00000000U},
116*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 1
117*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 1
118*91f16700Schasinglulu 	 *	{SEC_GRP0COND1,         0x00000000U},
119*91f16700Schasinglulu 	 *	{SEC_GRP1COND1,         0x00000000U},
120*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 2
121*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 2
122*91f16700Schasinglulu 	 *	{SEC_GRP0COND2,         0x00000000U},
123*91f16700Schasinglulu 	 *	{SEC_GRP1COND2,         0x00000000U},
124*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 3
125*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 3
126*91f16700Schasinglulu 	 * Bit19: AXI-Bus (Main Memory domain AXI) slave ports.
127*91f16700Schasinglulu 	 *	  SecurityGroup3
128*91f16700Schasinglulu 	 * Bit 9: DBSC4 register access slave ports.
129*91f16700Schasinglulu 	 *        SecurityGroup3
130*91f16700Schasinglulu 	 */
131*91f16700Schasinglulu #if (LIFEC_DBSC_PROTECT_ENABLE == 1)
132*91f16700Schasinglulu 	{ SEC_GRP0COND3, 0x00080200U },
133*91f16700Schasinglulu 	{ SEC_GRP1COND3, 0x00080200U },
134*91f16700Schasinglulu #else /* (LIFEC_DBSC_PROTECT_ENABLE == 1) */
135*91f16700Schasinglulu 	{ SEC_GRP0COND3, 0x00000000U },
136*91f16700Schasinglulu 	{ SEC_GRP1COND3, 0x00000000U },
137*91f16700Schasinglulu #endif /* (LIFEC_DBSC_PROTECT_ENABLE == 1) */
138*91f16700Schasinglulu 	/*
139*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 4
140*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 4
141*91f16700Schasinglulu 	 *	{SEC_GRP0COND4,         0x00000000U},
142*91f16700Schasinglulu 	 *	{SEC_GRP1COND4,         0x00000000U},
143*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 5
144*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 5
145*91f16700Schasinglulu 	 * Bit 6: Boot ROM slave ports
146*91f16700Schasinglulu 	 *	  SecurityGroup3
147*91f16700Schasinglulu 	 */
148*91f16700Schasinglulu 	{ SEC_GRP0COND5, 0x00000040U },
149*91f16700Schasinglulu 	{ SEC_GRP1COND5, 0x00000040U },
150*91f16700Schasinglulu 	/*
151*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 6
152*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 6
153*91f16700Schasinglulu 	 * Bit13: SCEG PKA (secure APB) slave ports
154*91f16700Schasinglulu 	 *	  SecurityGroup3
155*91f16700Schasinglulu 	 *	  Reserved[R-Car E3/D3]
156*91f16700Schasinglulu 	 * Bit12: SCEG PKA (public APB) slave ports
157*91f16700Schasinglulu 	 *	  SecurityGroup3
158*91f16700Schasinglulu 	 *	  Reserved[R-Car E3/D3]
159*91f16700Schasinglulu 	 * Bit10: SCEG Secure Core slave ports
160*91f16700Schasinglulu 	 *	  SecurityGroup3
161*91f16700Schasinglulu 	 */
162*91f16700Schasinglulu #if RCAR_LSI == RCAR_E3 || RCAR_LSI == RCAR_D3
163*91f16700Schasinglulu 	{ SEC_GRP0COND6, 0x00000400U },
164*91f16700Schasinglulu 	{ SEC_GRP1COND6, 0x00000400U },
165*91f16700Schasinglulu #else /* RCAR_LSI == RCAR_E3 */
166*91f16700Schasinglulu 	{ SEC_GRP0COND6, 0x00003400U },
167*91f16700Schasinglulu 	{ SEC_GRP1COND6, 0x00003400U },
168*91f16700Schasinglulu #endif /* RCAR_LSI == RCAR_E3 */
169*91f16700Schasinglulu 	/*
170*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 7
171*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 7
172*91f16700Schasinglulu 	 *	{SEC_GRP0COND7,         0x00000000U},
173*91f16700Schasinglulu 	 *	{SEC_GRP1COND7,         0x00000000U},
174*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 8
175*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 8
176*91f16700Schasinglulu 	 *	{SEC_GRP0COND8,         0x00000000U},
177*91f16700Schasinglulu 	 *	{SEC_GRP1COND8,         0x00000000U},
178*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 9
179*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 9
180*91f16700Schasinglulu 	 *	{SEC_GRP0COND9,         0x00000000U},
181*91f16700Schasinglulu 	 *	{SEC_GRP1COND9,         0x00000000U},
182*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 10
183*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 10
184*91f16700Schasinglulu 	 *	{SEC_GRP0COND10,        0x00000000U},
185*91f16700Schasinglulu 	 *	{SEC_GRP1COND10,        0x00000000U},
186*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 11
187*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 11
188*91f16700Schasinglulu 	 *	{SEC_GRP0COND11,        0x00000000U},
189*91f16700Schasinglulu 	 *	{SEC_GRP1COND11,        0x00000000U},
190*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 12
191*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 12
192*91f16700Schasinglulu 	 *	{SEC_GRP0COND12,        0x00000000U},
193*91f16700Schasinglulu 	 *	{SEC_GRP1COND12,        0x00000000U},
194*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 13
195*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 13
196*91f16700Schasinglulu 	 * Bit22: RPC slave ports.
197*91f16700Schasinglulu 	 *	  SecurityGroup3
198*91f16700Schasinglulu 	 */
199*91f16700Schasinglulu #if (RCAR_RPC_HYPERFLASH_LOCKED == 1)
200*91f16700Schasinglulu 	    { SEC_GRP0COND13,     0x00400000U },
201*91f16700Schasinglulu 	    { SEC_GRP1COND13,     0x00400000U },
202*91f16700Schasinglulu #endif /* (RCAR_RPC_HYPERFLASH_LOCKED == 1) */
203*91f16700Schasinglulu 	/*
204*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 14
205*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 14
206*91f16700Schasinglulu 	 * Bit26: System Timer (SCMT) slave ports
207*91f16700Schasinglulu 	 *	  SecurityGroup3
208*91f16700Schasinglulu 	 * Bit27: System Watchdog Timer (SWDT) slave ports
209*91f16700Schasinglulu 	 *	  SecurityGroup3
210*91f16700Schasinglulu 	 */
211*91f16700Schasinglulu 	{ SEC_GRP0COND14, 0x0C000000U },
212*91f16700Schasinglulu 	{ SEC_GRP1COND14, 0x0C000000U },
213*91f16700Schasinglulu 	/*
214*91f16700Schasinglulu 	 * Security group 0 attribute setting for slave ports 15
215*91f16700Schasinglulu 	 * Security group 1 attribute setting for slave ports 15
216*91f16700Schasinglulu 	 * Bit13: RST slave ports
217*91f16700Schasinglulu 	 *	  SecurityGroup3
218*91f16700Schasinglulu 	 * Bit 7: Life Cycle 0 slave ports
219*91f16700Schasinglulu 	 *	  SecurityGroup3
220*91f16700Schasinglulu 	 * Bit 6: TDBG slave ports
221*91f16700Schasinglulu 	 *	  SecurityGroup3
222*91f16700Schasinglulu 	 */
223*91f16700Schasinglulu 	{ SEC_GRP0COND15, 0x000000C0U },
224*91f16700Schasinglulu 	{ SEC_GRP1COND15, 0x000000C0U },
225*91f16700Schasinglulu 	/*
226*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 0
227*91f16700Schasinglulu 	 *	{SEC_READONLY0,         0x00000000U},
228*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 1
229*91f16700Schasinglulu 	 *	{SEC_READONLY1,         0x00000000U},
230*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 2
231*91f16700Schasinglulu 	 *	{SEC_READONLY2,         0x00000000U},
232*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 3
233*91f16700Schasinglulu 	 *	{SEC_READONLY3,         0x00000000U},
234*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 4
235*91f16700Schasinglulu 	 *	{SEC_READONLY4,         0x00000000U},
236*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 5
237*91f16700Schasinglulu 	 *	{SEC_READONLY5,         0x00000000U},
238*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 6
239*91f16700Schasinglulu 	 *	{SEC_READONLY6,         0x00000000U},
240*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 7
241*91f16700Schasinglulu 	 *	{SEC_READONLY7,         0x00000000U},
242*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 8
243*91f16700Schasinglulu 	 *	{SEC_READONLY8,         0x00000000U},
244*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 9
245*91f16700Schasinglulu 	 *	{SEC_READONLY9,         0x00000000U},
246*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 10
247*91f16700Schasinglulu 	 *	{SEC_READONLY10,        0x00000000U},
248*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 11
249*91f16700Schasinglulu 	 *	{SEC_READONLY11,        0x00000000U},
250*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 12
251*91f16700Schasinglulu 	 *	{SEC_READONLY12,        0x00000000U},
252*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 13
253*91f16700Schasinglulu 	 *	{SEC_READONLY13,        0x00000000U},
254*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 14
255*91f16700Schasinglulu 	 *	{SEC_READONLY14,        0x00000000U},
256*91f16700Schasinglulu 	 * Security write protection attribute setting slave ports 15
257*91f16700Schasinglulu 	 *	{SEC_READONLY15,        0x00000000U}
258*91f16700Schasinglulu 	 */
259*91f16700Schasinglulu };
260*91f16700Schasinglulu 
261*91f16700Schasinglulu /* AXI settings */
262*91f16700Schasinglulu static const struct {
263*91f16700Schasinglulu 	uint32_t reg;
264*91f16700Schasinglulu 	uint32_t val;
265*91f16700Schasinglulu } axi[] = {
266*91f16700Schasinglulu 	/*
267*91f16700Schasinglulu 	 * DRAM protection
268*91f16700Schasinglulu 	 * AXI dram protected area division
269*91f16700Schasinglulu 	 */
270*91f16700Schasinglulu 	{AXI_DPTDIVCR0,  0x0E0403F0U},
271*91f16700Schasinglulu 	{AXI_DPTDIVCR1,  0x0E0407E0U},
272*91f16700Schasinglulu 	{AXI_DPTDIVCR2,  0x0E080000U},
273*91f16700Schasinglulu 	{AXI_DPTDIVCR3,  0x0E080000U},
274*91f16700Schasinglulu 	{AXI_DPTDIVCR4,  0x0E080000U},
275*91f16700Schasinglulu 	{AXI_DPTDIVCR5,  0x0E080000U},
276*91f16700Schasinglulu 	{AXI_DPTDIVCR6,  0x0E080000U},
277*91f16700Schasinglulu 	{AXI_DPTDIVCR7,  0x0E080000U},
278*91f16700Schasinglulu 	{AXI_DPTDIVCR8,  0x0E080000U},
279*91f16700Schasinglulu 	{AXI_DPTDIVCR9,  0x0E080000U},
280*91f16700Schasinglulu 	{AXI_DPTDIVCR10, 0x0E080000U},
281*91f16700Schasinglulu 	{AXI_DPTDIVCR11, 0x0E080000U},
282*91f16700Schasinglulu 	{AXI_DPTDIVCR12, 0x0E080000U},
283*91f16700Schasinglulu 	{AXI_DPTDIVCR13, 0x0E080000U},
284*91f16700Schasinglulu 	{AXI_DPTDIVCR14, 0x0E080000U},
285*91f16700Schasinglulu 	/* AXI dram protected area setting */
286*91f16700Schasinglulu 	{AXI_DPTCR0,  0x0E000000U},
287*91f16700Schasinglulu 	{AXI_DPTCR1,  0x0E000E0EU},
288*91f16700Schasinglulu 	{AXI_DPTCR2,  0x0E000000U},
289*91f16700Schasinglulu 	{AXI_DPTCR3,  0x0E000000U},
290*91f16700Schasinglulu 	{AXI_DPTCR4,  0x0E000000U},
291*91f16700Schasinglulu 	{AXI_DPTCR5,  0x0E000000U},
292*91f16700Schasinglulu 	{AXI_DPTCR6,  0x0E000000U},
293*91f16700Schasinglulu 	{AXI_DPTCR7,  0x0E000000U},
294*91f16700Schasinglulu 	{AXI_DPTCR8,  0x0E000000U},
295*91f16700Schasinglulu 	{AXI_DPTCR9,  0x0E000000U},
296*91f16700Schasinglulu 	{AXI_DPTCR10, 0x0E000000U},
297*91f16700Schasinglulu 	{AXI_DPTCR11, 0x0E000000U},
298*91f16700Schasinglulu 	{AXI_DPTCR12, 0x0E000000U},
299*91f16700Schasinglulu 	{AXI_DPTCR13, 0x0E000000U},
300*91f16700Schasinglulu 	{AXI_DPTCR14, 0x0E000000U},
301*91f16700Schasinglulu 	{AXI_DPTCR15, 0x0E000000U},
302*91f16700Schasinglulu 	/*
303*91f16700Schasinglulu 	 * SRAM ptotection
304*91f16700Schasinglulu 	 * AXI sram protected area division
305*91f16700Schasinglulu 	 */
306*91f16700Schasinglulu 	{AXI_SPTDIVCR0,  0x0E0E6304U},
307*91f16700Schasinglulu 	{AXI_SPTDIVCR1,  0x0E0E6360U},
308*91f16700Schasinglulu 	{AXI_SPTDIVCR2,  0x0E0E6360U},
309*91f16700Schasinglulu 	{AXI_SPTDIVCR3,  0x0E0E6360U},
310*91f16700Schasinglulu 	{AXI_SPTDIVCR4,  0x0E0E6360U},
311*91f16700Schasinglulu 	{AXI_SPTDIVCR5,  0x0E0E6360U},
312*91f16700Schasinglulu 	{AXI_SPTDIVCR6,  0x0E0E6360U},
313*91f16700Schasinglulu 	{AXI_SPTDIVCR7,  0x0E0E6360U},
314*91f16700Schasinglulu 	{AXI_SPTDIVCR8,  0x0E0E6360U},
315*91f16700Schasinglulu 	{AXI_SPTDIVCR9,  0x0E0E6360U},
316*91f16700Schasinglulu 	{AXI_SPTDIVCR10, 0x0E0E6360U},
317*91f16700Schasinglulu 	{AXI_SPTDIVCR11, 0x0E0E6360U},
318*91f16700Schasinglulu 	{AXI_SPTDIVCR12, 0x0E0E6360U},
319*91f16700Schasinglulu 	{AXI_SPTDIVCR13, 0x0E0E6360U},
320*91f16700Schasinglulu 	{AXI_SPTDIVCR14, 0x0E0E6360U},
321*91f16700Schasinglulu 	/* AXI sram protected area setting */
322*91f16700Schasinglulu 	{AXI_SPTCR0,  0x0E000E0EU},
323*91f16700Schasinglulu 	{AXI_SPTCR1,  0x0E000000U},
324*91f16700Schasinglulu 	{AXI_SPTCR2,  0x0E000000U},
325*91f16700Schasinglulu 	{AXI_SPTCR3,  0x0E000000U},
326*91f16700Schasinglulu 	{AXI_SPTCR4,  0x0E000000U},
327*91f16700Schasinglulu 	{AXI_SPTCR5,  0x0E000000U},
328*91f16700Schasinglulu 	{AXI_SPTCR6,  0x0E000000U},
329*91f16700Schasinglulu 	{AXI_SPTCR7,  0x0E000000U},
330*91f16700Schasinglulu 	{AXI_SPTCR8,  0x0E000000U},
331*91f16700Schasinglulu 	{AXI_SPTCR9,  0x0E000000U},
332*91f16700Schasinglulu 	{AXI_SPTCR10, 0x0E000000U},
333*91f16700Schasinglulu 	{AXI_SPTCR11, 0x0E000000U},
334*91f16700Schasinglulu 	{AXI_SPTCR12, 0x0E000000U},
335*91f16700Schasinglulu 	{AXI_SPTCR13, 0x0E000000U},
336*91f16700Schasinglulu 	{AXI_SPTCR14, 0x0E000000U},
337*91f16700Schasinglulu 	{AXI_SPTCR15, 0x0E000000U}
338*91f16700Schasinglulu };
339*91f16700Schasinglulu 
340*91f16700Schasinglulu static void lifec_security_setting(void)
341*91f16700Schasinglulu {
342*91f16700Schasinglulu 	uint32_t i;
343*91f16700Schasinglulu 
344*91f16700Schasinglulu 	for (i = 0; i < ARRAY_SIZE(lifec); i++)
345*91f16700Schasinglulu 		mmio_write_32(lifec[i].reg, lifec[i].val);
346*91f16700Schasinglulu }
347*91f16700Schasinglulu 
348*91f16700Schasinglulu /* SRAM/DRAM protection setting */
349*91f16700Schasinglulu static void axi_security_setting(void)
350*91f16700Schasinglulu {
351*91f16700Schasinglulu 	uint32_t i;
352*91f16700Schasinglulu 
353*91f16700Schasinglulu 	for (i = 0; i < ARRAY_SIZE(axi); i++)
354*91f16700Schasinglulu 		mmio_write_32(axi[i].reg, axi[i].val);
355*91f16700Schasinglulu }
356*91f16700Schasinglulu 
357*91f16700Schasinglulu void bl2_secure_setting(void)
358*91f16700Schasinglulu {
359*91f16700Schasinglulu 	lifec_security_setting();
360*91f16700Schasinglulu 	axi_security_setting();
361*91f16700Schasinglulu 	rcar_micro_delay(10U);
362*91f16700Schasinglulu }
363