|
@@ -42,6 +42,60 @@ ENTRY(lowlevel_init)
|
|
|
ldr x0, =secondary_boot_func
|
|
|
blr x0
|
|
|
2:
|
|
|
+
|
|
|
+#ifdef CONFIG_FSL_TZPC_BP147
|
|
|
+ /* Set Non Secure access for all devices protected via TZPC */
|
|
|
+ ldr x1, =TZPCDECPROT_0_SET_BASE /* Decode Protection-0 Set Reg */
|
|
|
+ orr w0, w0, #1 << 3 /* DCFG_RESET is accessible from NS world */
|
|
|
+ str w0, [x1]
|
|
|
+
|
|
|
+ isb
|
|
|
+ dsb sy
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef CONFIG_FSL_TZASC_400
|
|
|
+ /* Set TZASC so that:
|
|
|
+ * a. We use only Region0 whose global secure write/read is EN
|
|
|
+ * b. We use only Region0 whose NSAID write/read is EN
|
|
|
+ *
|
|
|
+ * NOTE: As per the CCSR map doc, TZASC 3 and TZASC 4 are just
|
|
|
+ * placeholders.
|
|
|
+ */
|
|
|
+ ldr x1, =TZASC_GATE_KEEPER(0)
|
|
|
+ ldr x0, [x1] /* Filter 0 Gate Keeper Register */
|
|
|
+ orr x0, x0, #1 << 0 /* Set open_request for Filter 0 */
|
|
|
+ str x0, [x1]
|
|
|
+
|
|
|
+ ldr x1, =TZASC_GATE_KEEPER(1)
|
|
|
+ ldr x0, [x1] /* Filter 0 Gate Keeper Register */
|
|
|
+ orr x0, x0, #1 << 0 /* Set open_request for Filter 0 */
|
|
|
+ str x0, [x1]
|
|
|
+
|
|
|
+ ldr x1, =TZASC_REGION_ATTRIBUTES_0(0)
|
|
|
+ ldr x0, [x1] /* Region-0 Attributes Register */
|
|
|
+ orr x0, x0, #1 << 31 /* Set Sec global write en, Bit[31] */
|
|
|
+ orr x0, x0, #1 << 30 /* Set Sec global read en, Bit[30] */
|
|
|
+ str x0, [x1]
|
|
|
+
|
|
|
+ ldr x1, =TZASC_REGION_ATTRIBUTES_0(1)
|
|
|
+ ldr x0, [x1] /* Region-1 Attributes Register */
|
|
|
+ orr x0, x0, #1 << 31 /* Set Sec global write en, Bit[31] */
|
|
|
+ orr x0, x0, #1 << 30 /* Set Sec global read en, Bit[30] */
|
|
|
+ str x0, [x1]
|
|
|
+
|
|
|
+ ldr x1, =TZASC_REGION_ID_ACCESS_0(0)
|
|
|
+ ldr w0, [x1] /* Region-0 Access Register */
|
|
|
+ mov w0, #0xFFFFFFFF /* Set nsaid_wr_en and nsaid_rd_en */
|
|
|
+ str w0, [x1]
|
|
|
+
|
|
|
+ ldr x1, =TZASC_REGION_ID_ACCESS_0(1)
|
|
|
+ ldr w0, [x1] /* Region-1 Attributes Register */
|
|
|
+ mov w0, #0xFFFFFFFF /* Set nsaid_wr_en and nsaid_rd_en */
|
|
|
+ str w0, [x1]
|
|
|
+
|
|
|
+ isb
|
|
|
+ dsb sy
|
|
|
+#endif
|
|
|
mov lr, x29 /* Restore LR */
|
|
|
ret
|
|
|
ENDPROC(lowlevel_init)
|