xref: /rk3399_ARM-atf/plat/renesas/common/bl2_secure_setting.c (revision d0574da589330f676af5a9a3ed5a08a82993e666)
1499c2713SBiju Das /*
2*e9afde1aSToshiyuki Ogasahara  * Copyright (c) 2015-2023, Renesas Electronics Corporation. All rights reserved.
3499c2713SBiju Das  *
4499c2713SBiju Das  * SPDX-License-Identifier: BSD-3-Clause
5499c2713SBiju Das  */
6499c2713SBiju Das 
7499c2713SBiju Das #include <lib/mmio.h>
8499c2713SBiju Das #include <lib/utils_def.h>
9499c2713SBiju Das 
10499c2713SBiju Das #include "axi_registers.h"
11499c2713SBiju Das #include "lifec_registers.h"
12499c2713SBiju Das #include "micro_delay.h"
13499c2713SBiju Das 
14499c2713SBiju Das static void lifec_security_setting(void);
15499c2713SBiju Das static void axi_security_setting(void);
16499c2713SBiju Das 
17499c2713SBiju Das static const struct {
18499c2713SBiju Das 	uint32_t reg;
19499c2713SBiju Das 	uint32_t val;
20499c2713SBiju Das } lifec[] = {
21499c2713SBiju Das 	/*
22499c2713SBiju Das 	 * LIFEC0 (SECURITY) settings
23499c2713SBiju Das 	 * Security attribute setting for master ports
24499c2713SBiju Das 	 * Bit 0: ARM realtime core (Cortex-R7) master port
25499c2713SBiju Das 	 *        0: Non-Secure
26499c2713SBiju Das 	 */
27499c2713SBiju Das 	{ SEC_SRC, 0x0000001EU },
28499c2713SBiju Das 	/*
29499c2713SBiju Das 	 * Security attribute setting for slave ports 0 to 15
30499c2713SBiju Das 	 *      {SEC_SEL0,              0xFFFFFFFFU},
31499c2713SBiju Das 	 *      {SEC_SEL1,              0xFFFFFFFFU},
32499c2713SBiju Das 	 *	{SEC_SEL2,              0xFFFFFFFFU},
33499c2713SBiju Das 	 * Bit19: AXI-Bus (Main Memory domain AXI) slave ports
34499c2713SBiju Das 	 *        0: registers accessed from secure resource only
35499c2713SBiju Das 	 * Bit 9: DBSC4 register access slave ports.
36499c2713SBiju Das 	 *        0: registers accessed from secure resource only.
37499c2713SBiju Das 	 */
38499c2713SBiju Das #if (LIFEC_DBSC_PROTECT_ENABLE == 1)
39499c2713SBiju Das 	{ SEC_SEL3, 0xFFF7FDFFU },
40499c2713SBiju Das #else /* LIFEC_DBSC_PROTECT_ENABLE == 1 */
41499c2713SBiju Das 	{ SEC_SEL3, 0xFFFFFFFFU },
42499c2713SBiju Das #endif /* LIFEC_DBSC_PROTECT_ENABLE == 1 */
43499c2713SBiju Das 	/*
44499c2713SBiju Das 	 *	{SEC_SEL4,              0xFFFFFFFFU},
45499c2713SBiju Das 	 * Bit 6: Boot ROM slave ports.
46499c2713SBiju Das 	 *        0: registers accessed from secure resource only
47499c2713SBiju Das 	 */
48499c2713SBiju Das 	{ SEC_SEL5, 0xFFFFFFBFU },
49499c2713SBiju Das 	/*
50499c2713SBiju Das 	 * Bit13: SCEG PKA (secure APB) slave ports
51499c2713SBiju Das 	 *        0: registers accessed from secure resource only
525460f828SToshiyuki Ogasahara 	 *        1: Reserved[R-Car E3/D3]
53499c2713SBiju Das 	 * Bit12: SCEG PKA (public APB) slave ports
54499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
555460f828SToshiyuki Ogasahara 	 *	  1: Reserved[R-Car E3/D3]
56499c2713SBiju Das 	 * Bit10: SCEG Secure Core slave ports
57499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
58499c2713SBiju Das 	 */
59499c2713SBiju Das #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3)
60499c2713SBiju Das 	{ SEC_SEL6, 0xFFFFFBFFU },
61499c2713SBiju Das #else /*  (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) */
62499c2713SBiju Das 	{ SEC_SEL6, 0xFFFFCBFFU },
63499c2713SBiju Das #endif /*  (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) */
64499c2713SBiju Das 	/*
65499c2713SBiju Das 	 *	{SEC_SEL7,              0xFFFFFFFFU},
66499c2713SBiju Das 	 *	{SEC_SEL8,              0xFFFFFFFFU},
67499c2713SBiju Das 	 *	{SEC_SEL9,              0xFFFFFFFFU},
68499c2713SBiju Das 	 *	{SEC_SEL10,             0xFFFFFFFFU},
69499c2713SBiju Das 	 *	{SEC_SEL11,             0xFFFFFFFFU},
70499c2713SBiju Das 	 *	{SEC_SEL12,             0xFFFFFFFFU},
71499c2713SBiju Das 	 * Bit22: RPC slave ports.
72499c2713SBiju Das 	 *	  0: registers accessed from secure resource only.
73499c2713SBiju Das 	 */
74499c2713SBiju Das #if (RCAR_RPC_HYPERFLASH_LOCKED == 1)
75499c2713SBiju Das 	{ SEC_SEL13, 0xFFBFFFFFU },
76499c2713SBiju Das #endif /* (RCAR_RPC_HYPERFLASH_LOCKED == 1) */
77499c2713SBiju Das 	/*
78499c2713SBiju Das 	 * Bit27: System Timer (SCMT) slave ports
79499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
80499c2713SBiju Das 	 * Bit26: System Watchdog Timer (SWDT) slave ports
81499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
82499c2713SBiju Das 	 */
83499c2713SBiju Das 	{ SEC_SEL14, 0xF3FFFFFFU },
84499c2713SBiju Das 	/*
85499c2713SBiju Das 	 * Bit13: RST slave ports.
86499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
87499c2713SBiju Das 	 * Bit 7: Life Cycle 0 slave ports
88499c2713SBiju Das 	 *	  0: registers accessed from secure resource only
89499c2713SBiju Das 	 */
90499c2713SBiju Das 	{ SEC_SEL15, 0xFFFFFF3FU },
91499c2713SBiju Das 	/*
92499c2713SBiju Das 	 * Security group 0 attribute setting for master ports 0
93499c2713SBiju Das 	 * Security group 1 attribute setting for master ports 0
94499c2713SBiju Das 	 *	{SEC_GRP0CR0,           0x00000000U},
95499c2713SBiju Das 	 *	{SEC_GRP1CR0,           0x00000000U},
96499c2713SBiju Das 	 * Security group 0 attribute setting for master ports 1
97499c2713SBiju Das 	 * Security group 1 attribute setting for master ports 1
98499c2713SBiju Das 	 *	{SEC_GRP0CR1,           0x00000000U},
99499c2713SBiju Das 	 *	{SEC_GRP1CR1,           0x00000000U},
100499c2713SBiju Das 	 * Security group 0 attribute setting for master ports 2
101499c2713SBiju Das 	 * Security group 1 attribute setting for master ports 2
102499c2713SBiju Das 	 * Bit17: SCEG Secure Core master ports.
103499c2713SBiju Das 	 *	  SecurityGroup3
104499c2713SBiju Das 	 */
105499c2713SBiju Das 	{ SEC_GRP0CR2, 0x00020000U },
106499c2713SBiju Das 	{ SEC_GRP1CR2, 0x00020000U },
107499c2713SBiju Das 	/*
108499c2713SBiju Das 	 * Security group 0 attribute setting for master ports 3
109499c2713SBiju Das 	 * Security group 1 attribute setting for master ports 3
110*e9afde1aSToshiyuki Ogasahara 	 */
111*e9afde1aSToshiyuki Ogasahara 	{ SEC_GRP0CR3, 0x00003780U },
112*e9afde1aSToshiyuki Ogasahara 	{ SEC_GRP1CR3, 0x00003780U },
113*e9afde1aSToshiyuki Ogasahara 	/*
114499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 0
115499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 0
116499c2713SBiju Das 	 *	{SEC_GRP0COND0,         0x00000000U},
117499c2713SBiju Das 	 *	{SEC_GRP1COND0,         0x00000000U},
118499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 1
119499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 1
120499c2713SBiju Das 	 *	{SEC_GRP0COND1,         0x00000000U},
121499c2713SBiju Das 	 *	{SEC_GRP1COND1,         0x00000000U},
122499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 2
123499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 2
124499c2713SBiju Das 	 *	{SEC_GRP0COND2,         0x00000000U},
125499c2713SBiju Das 	 *	{SEC_GRP1COND2,         0x00000000U},
126499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 3
127499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 3
128499c2713SBiju Das 	 * Bit19: AXI-Bus (Main Memory domain AXI) slave ports.
129499c2713SBiju Das 	 *	  SecurityGroup3
130499c2713SBiju Das 	 * Bit 9: DBSC4 register access slave ports.
131499c2713SBiju Das 	 *        SecurityGroup3
132499c2713SBiju Das 	 */
133499c2713SBiju Das #if (LIFEC_DBSC_PROTECT_ENABLE == 1)
134499c2713SBiju Das 	{ SEC_GRP0COND3, 0x00080200U },
135499c2713SBiju Das 	{ SEC_GRP1COND3, 0x00080200U },
136499c2713SBiju Das #else /* (LIFEC_DBSC_PROTECT_ENABLE == 1) */
137499c2713SBiju Das 	{ SEC_GRP0COND3, 0x00000000U },
138499c2713SBiju Das 	{ SEC_GRP1COND3, 0x00000000U },
139499c2713SBiju Das #endif /* (LIFEC_DBSC_PROTECT_ENABLE == 1) */
140499c2713SBiju Das 	/*
141499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 4
142499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 4
143499c2713SBiju Das 	 *	{SEC_GRP0COND4,         0x00000000U},
144499c2713SBiju Das 	 *	{SEC_GRP1COND4,         0x00000000U},
145499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 5
146499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 5
147499c2713SBiju Das 	 * Bit 6: Boot ROM slave ports
148499c2713SBiju Das 	 *	  SecurityGroup3
149499c2713SBiju Das 	 */
150499c2713SBiju Das 	{ SEC_GRP0COND5, 0x00000040U },
151499c2713SBiju Das 	{ SEC_GRP1COND5, 0x00000040U },
152499c2713SBiju Das 	/*
153499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 6
154499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 6
155499c2713SBiju Das 	 * Bit13: SCEG PKA (secure APB) slave ports
156499c2713SBiju Das 	 *	  SecurityGroup3
1575460f828SToshiyuki Ogasahara 	 *	  Reserved[R-Car E3/D3]
158499c2713SBiju Das 	 * Bit12: SCEG PKA (public APB) slave ports
159499c2713SBiju Das 	 *	  SecurityGroup3
1605460f828SToshiyuki Ogasahara 	 *	  Reserved[R-Car E3/D3]
161499c2713SBiju Das 	 * Bit10: SCEG Secure Core slave ports
162499c2713SBiju Das 	 *	  SecurityGroup3
163499c2713SBiju Das 	 */
1645460f828SToshiyuki Ogasahara #if RCAR_LSI == RCAR_E3 || RCAR_LSI == RCAR_D3
165499c2713SBiju Das 	{ SEC_GRP0COND6, 0x00000400U },
166499c2713SBiju Das 	{ SEC_GRP1COND6, 0x00000400U },
167499c2713SBiju Das #else /* RCAR_LSI == RCAR_E3 */
168499c2713SBiju Das 	{ SEC_GRP0COND6, 0x00003400U },
169499c2713SBiju Das 	{ SEC_GRP1COND6, 0x00003400U },
170499c2713SBiju Das #endif /* RCAR_LSI == RCAR_E3 */
171499c2713SBiju Das 	/*
172499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 7
173499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 7
174499c2713SBiju Das 	 *	{SEC_GRP0COND7,         0x00000000U},
175499c2713SBiju Das 	 *	{SEC_GRP1COND7,         0x00000000U},
176499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 8
177499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 8
178499c2713SBiju Das 	 *	{SEC_GRP0COND8,         0x00000000U},
179499c2713SBiju Das 	 *	{SEC_GRP1COND8,         0x00000000U},
180499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 9
181499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 9
182499c2713SBiju Das 	 *	{SEC_GRP0COND9,         0x00000000U},
183499c2713SBiju Das 	 *	{SEC_GRP1COND9,         0x00000000U},
184499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 10
185499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 10
186499c2713SBiju Das 	 *	{SEC_GRP0COND10,        0x00000000U},
187499c2713SBiju Das 	 *	{SEC_GRP1COND10,        0x00000000U},
188499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 11
189499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 11
190499c2713SBiju Das 	 *	{SEC_GRP0COND11,        0x00000000U},
191499c2713SBiju Das 	 *	{SEC_GRP1COND11,        0x00000000U},
192499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 12
193499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 12
194499c2713SBiju Das 	 *	{SEC_GRP0COND12,        0x00000000U},
195499c2713SBiju Das 	 *	{SEC_GRP1COND12,        0x00000000U},
196499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 13
197499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 13
198499c2713SBiju Das 	 * Bit22: RPC slave ports.
199499c2713SBiju Das 	 *	  SecurityGroup3
200499c2713SBiju Das 	 */
201499c2713SBiju Das #if (RCAR_RPC_HYPERFLASH_LOCKED == 1)
202499c2713SBiju Das 	    { SEC_GRP0COND13,     0x00400000U },
203499c2713SBiju Das 	    { SEC_GRP1COND13,     0x00400000U },
204499c2713SBiju Das #endif /* (RCAR_RPC_HYPERFLASH_LOCKED == 1) */
205499c2713SBiju Das 	/*
206499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 14
207499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 14
208499c2713SBiju Das 	 * Bit26: System Timer (SCMT) slave ports
209499c2713SBiju Das 	 *	  SecurityGroup3
210499c2713SBiju Das 	 * Bit27: System Watchdog Timer (SWDT) slave ports
211499c2713SBiju Das 	 *	  SecurityGroup3
212499c2713SBiju Das 	 */
213499c2713SBiju Das 	{ SEC_GRP0COND14, 0x0C000000U },
214499c2713SBiju Das 	{ SEC_GRP1COND14, 0x0C000000U },
215499c2713SBiju Das 	/*
216499c2713SBiju Das 	 * Security group 0 attribute setting for slave ports 15
217499c2713SBiju Das 	 * Security group 1 attribute setting for slave ports 15
218499c2713SBiju Das 	 * Bit13: RST slave ports
219499c2713SBiju Das 	 *	  SecurityGroup3
220499c2713SBiju Das 	 * Bit 7: Life Cycle 0 slave ports
221499c2713SBiju Das 	 *	  SecurityGroup3
222499c2713SBiju Das 	 * Bit 6: TDBG slave ports
223499c2713SBiju Das 	 *	  SecurityGroup3
224499c2713SBiju Das 	 */
225499c2713SBiju Das 	{ SEC_GRP0COND15, 0x000000C0U },
226499c2713SBiju Das 	{ SEC_GRP1COND15, 0x000000C0U },
227499c2713SBiju Das 	/*
228499c2713SBiju Das 	 * Security write protection attribute setting slave ports 0
229499c2713SBiju Das 	 *	{SEC_READONLY0,         0x00000000U},
230499c2713SBiju Das 	 * Security write protection attribute setting slave ports 1
231499c2713SBiju Das 	 *	{SEC_READONLY1,         0x00000000U},
232499c2713SBiju Das 	 * Security write protection attribute setting slave ports 2
233499c2713SBiju Das 	 *	{SEC_READONLY2,         0x00000000U},
234499c2713SBiju Das 	 * Security write protection attribute setting slave ports 3
235499c2713SBiju Das 	 *	{SEC_READONLY3,         0x00000000U},
236499c2713SBiju Das 	 * Security write protection attribute setting slave ports 4
237499c2713SBiju Das 	 *	{SEC_READONLY4,         0x00000000U},
238499c2713SBiju Das 	 * Security write protection attribute setting slave ports 5
239499c2713SBiju Das 	 *	{SEC_READONLY5,         0x00000000U},
240499c2713SBiju Das 	 * Security write protection attribute setting slave ports 6
241499c2713SBiju Das 	 *	{SEC_READONLY6,         0x00000000U},
242499c2713SBiju Das 	 * Security write protection attribute setting slave ports 7
243499c2713SBiju Das 	 *	{SEC_READONLY7,         0x00000000U},
244499c2713SBiju Das 	 * Security write protection attribute setting slave ports 8
245499c2713SBiju Das 	 *	{SEC_READONLY8,         0x00000000U},
246499c2713SBiju Das 	 * Security write protection attribute setting slave ports 9
247499c2713SBiju Das 	 *	{SEC_READONLY9,         0x00000000U},
248499c2713SBiju Das 	 * Security write protection attribute setting slave ports 10
249499c2713SBiju Das 	 *	{SEC_READONLY10,        0x00000000U},
250499c2713SBiju Das 	 * Security write protection attribute setting slave ports 11
251499c2713SBiju Das 	 *	{SEC_READONLY11,        0x00000000U},
252499c2713SBiju Das 	 * Security write protection attribute setting slave ports 12
253499c2713SBiju Das 	 *	{SEC_READONLY12,        0x00000000U},
254499c2713SBiju Das 	 * Security write protection attribute setting slave ports 13
255499c2713SBiju Das 	 *	{SEC_READONLY13,        0x00000000U},
256499c2713SBiju Das 	 * Security write protection attribute setting slave ports 14
257499c2713SBiju Das 	 *	{SEC_READONLY14,        0x00000000U},
258499c2713SBiju Das 	 * Security write protection attribute setting slave ports 15
259499c2713SBiju Das 	 *	{SEC_READONLY15,        0x00000000U}
260499c2713SBiju Das 	 */
261499c2713SBiju Das };
262499c2713SBiju Das 
263499c2713SBiju Das /* AXI settings */
264*e9afde1aSToshiyuki Ogasahara struct axi_t {
265499c2713SBiju Das 	uint32_t reg;
266499c2713SBiju Das 	uint32_t val;
267*e9afde1aSToshiyuki Ogasahara };
268*e9afde1aSToshiyuki Ogasahara 
269*e9afde1aSToshiyuki Ogasahara static const struct axi_t axi[] = {
270499c2713SBiju Das 	/*
271499c2713SBiju Das 	 * SRAM ptotection
272499c2713SBiju Das 	 * AXI sram protected area division
273499c2713SBiju Das 	 */
274499c2713SBiju Das 	{AXI_SPTDIVCR0,  0x0E0E6304U},
275499c2713SBiju Das 	{AXI_SPTDIVCR1,  0x0E0E6360U},
276499c2713SBiju Das 	{AXI_SPTDIVCR2,  0x0E0E6360U},
277499c2713SBiju Das 	{AXI_SPTDIVCR3,  0x0E0E6360U},
278499c2713SBiju Das 	{AXI_SPTDIVCR4,  0x0E0E6360U},
279499c2713SBiju Das 	{AXI_SPTDIVCR5,  0x0E0E6360U},
280499c2713SBiju Das 	{AXI_SPTDIVCR6,  0x0E0E6360U},
281499c2713SBiju Das 	{AXI_SPTDIVCR7,  0x0E0E6360U},
282499c2713SBiju Das 	{AXI_SPTDIVCR8,  0x0E0E6360U},
283499c2713SBiju Das 	{AXI_SPTDIVCR9,  0x0E0E6360U},
284499c2713SBiju Das 	{AXI_SPTDIVCR10, 0x0E0E6360U},
285499c2713SBiju Das 	{AXI_SPTDIVCR11, 0x0E0E6360U},
286499c2713SBiju Das 	{AXI_SPTDIVCR12, 0x0E0E6360U},
287499c2713SBiju Das 	{AXI_SPTDIVCR13, 0x0E0E6360U},
288499c2713SBiju Das 	{AXI_SPTDIVCR14, 0x0E0E6360U},
289499c2713SBiju Das 	/* AXI sram protected area setting */
290499c2713SBiju Das 	{AXI_SPTCR0,  0x0E000E0EU},
291499c2713SBiju Das 	{AXI_SPTCR1,  0x0E000000U},
292499c2713SBiju Das 	{AXI_SPTCR2,  0x0E000000U},
293499c2713SBiju Das 	{AXI_SPTCR3,  0x0E000000U},
294499c2713SBiju Das 	{AXI_SPTCR4,  0x0E000000U},
295499c2713SBiju Das 	{AXI_SPTCR5,  0x0E000000U},
296499c2713SBiju Das 	{AXI_SPTCR6,  0x0E000000U},
297499c2713SBiju Das 	{AXI_SPTCR7,  0x0E000000U},
298499c2713SBiju Das 	{AXI_SPTCR8,  0x0E000000U},
299499c2713SBiju Das 	{AXI_SPTCR9,  0x0E000000U},
300499c2713SBiju Das 	{AXI_SPTCR10, 0x0E000000U},
301499c2713SBiju Das 	{AXI_SPTCR11, 0x0E000000U},
302499c2713SBiju Das 	{AXI_SPTCR12, 0x0E000000U},
303499c2713SBiju Das 	{AXI_SPTCR13, 0x0E000000U},
304499c2713SBiju Das 	{AXI_SPTCR14, 0x0E000000U},
305499c2713SBiju Das 	{AXI_SPTCR15, 0x0E000000U}
306499c2713SBiju Das };
307499c2713SBiju Das 
308*e9afde1aSToshiyuki Ogasahara static const struct axi_t axi_dram[] = {
309*e9afde1aSToshiyuki Ogasahara 	/*
310*e9afde1aSToshiyuki Ogasahara 	 * DRAM protection
311*e9afde1aSToshiyuki Ogasahara 	 * AXI dram protected area division
312*e9afde1aSToshiyuki Ogasahara 	 */
313*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR0,  0x0E0403F0U},
314*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR1,  0x0E0407E0U},
315*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR2,  0x0E080000U},
316*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR3,  0x0E080000U},
317*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR4,  0x0E080000U},
318*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR5,  0x0E080000U},
319*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR6,  0x0E080000U},
320*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR7,  0x0E080000U},
321*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR8,  0x0E080000U},
322*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR9,  0x0E080000U},
323*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR10, 0x0E080000U},
324*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR11, 0x0E080000U},
325*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR12, 0x0E080000U},
326*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR13, 0x0E080000U},
327*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTDIVCR14, 0x0E080000U},
328*e9afde1aSToshiyuki Ogasahara 	/* AXI dram protected area setting */
329*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR0,  0x0E000000U},
330*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR1,  0x0E000E0EU},
331*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR2,  0x0E000000U},
332*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR3,  0x0E000000U},
333*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR4,  0x0E000000U},
334*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR5,  0x0E000000U},
335*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR6,  0x0E000000U},
336*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR7,  0x0E000000U},
337*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR8,  0x0E000000U},
338*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR9,  0x0E000000U},
339*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR10, 0x0E000000U},
340*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR11, 0x0E000000U},
341*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR12, 0x0E000000U},
342*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR13, 0x0E000000U},
343*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR14, 0x0E000000U},
344*e9afde1aSToshiyuki Ogasahara 	{AXI_DPTCR15, 0x0E000000U},
345*e9afde1aSToshiyuki Ogasahara 	/* AXI sram protected area setting */
346*e9afde1aSToshiyuki Ogasahara 	{AXI_SPTCR15, 0x0E000000U}
347*e9afde1aSToshiyuki Ogasahara };
348*e9afde1aSToshiyuki Ogasahara 
lifec_security_setting(void)349499c2713SBiju Das static void lifec_security_setting(void)
350499c2713SBiju Das {
351499c2713SBiju Das 	uint32_t i;
352499c2713SBiju Das 
353499c2713SBiju Das 	for (i = 0; i < ARRAY_SIZE(lifec); i++)
354499c2713SBiju Das 		mmio_write_32(lifec[i].reg, lifec[i].val);
355499c2713SBiju Das }
356499c2713SBiju Das 
357*e9afde1aSToshiyuki Ogasahara /* SRAM protection setting */
axi_security_setting(void)358499c2713SBiju Das static void axi_security_setting(void)
359499c2713SBiju Das {
360499c2713SBiju Das 	uint32_t i;
361499c2713SBiju Das 
362499c2713SBiju Das 	for (i = 0; i < ARRAY_SIZE(axi); i++)
363499c2713SBiju Das 		mmio_write_32(axi[i].reg, axi[i].val);
364499c2713SBiju Das }
365499c2713SBiju Das 
366*e9afde1aSToshiyuki Ogasahara /* DRAM protection setting */
bl2_ram_security_setting_finish(void)367*e9afde1aSToshiyuki Ogasahara void bl2_ram_security_setting_finish(void)
368*e9afde1aSToshiyuki Ogasahara {
369*e9afde1aSToshiyuki Ogasahara 	uint32_t i;
370*e9afde1aSToshiyuki Ogasahara 
371*e9afde1aSToshiyuki Ogasahara 	for (i = 0; i < ARRAY_SIZE(axi_dram); i++)
372*e9afde1aSToshiyuki Ogasahara 		mmio_write_32(axi_dram[i].reg, axi_dram[i].val);
373*e9afde1aSToshiyuki Ogasahara }
374*e9afde1aSToshiyuki Ogasahara 
bl2_secure_setting(void)375499c2713SBiju Das void bl2_secure_setting(void)
376499c2713SBiju Das {
377499c2713SBiju Das 	lifec_security_setting();
378499c2713SBiju Das 	axi_security_setting();
379499c2713SBiju Das 	rcar_micro_delay(10U);
380499c2713SBiju Das }
381