diff options
-rw-r--r-- | plat/imx/imx8qm/imx8qm_bl31_setup.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/plat/imx/imx8qm/imx8qm_bl31_setup.c b/plat/imx/imx8qm/imx8qm_bl31_setup.c index 7ad56376..142dabc2 100644 --- a/plat/imx/imx8qm/imx8qm_bl31_setup.c +++ b/plat/imx/imx8qm/imx8qm_bl31_setup.c @@ -168,7 +168,7 @@ void mx8_partition_resources(void) sc_err_t err; sc_rm_pt_t secure_part, os_part; sc_rm_mr_t mr, mr_record = 64; - bool owned; + bool owned, owned2; sc_faddr_t start, end; int i; @@ -185,6 +185,15 @@ void mx8_partition_resources(void) secure_rsrcs[i], false); } + owned = sc_rm_is_resource_owned(ipc_handle, SC_R_M4_0_PID0); + if (owned) + err = sc_rm_set_resource_movable(ipc_handle, SC_R_M4_0_PID0, + SC_R_M4_0_PID0, false); + + owned2 = sc_rm_is_resource_owned(ipc_handle, SC_R_M4_1_PID0); + if (owned2) + err = sc_rm_set_resource_movable(ipc_handle, SC_R_M4_1_PID0, + SC_R_M4_1_PID0, false); /* move all movable resources and pins to non-secure partition */ err = sc_rm_move_all(ipc_handle, secure_part, os_part, true, true); @@ -194,6 +203,17 @@ void mx8_partition_resources(void) os_part, SC_RM_PERM_FULL); } + if (owned) { + err = sc_rm_set_resource_movable(ipc_handle, SC_R_M4_0_PID0, + SC_R_M4_0_PID0, true); + err = sc_rm_assign_resource(ipc_handle, os_part, SC_R_M4_0_PID0); + } + if (owned2) { + err = sc_rm_set_resource_movable(ipc_handle, SC_R_M4_1_PID0, + SC_R_M4_1_PID0, true); + err = sc_rm_assign_resource(ipc_handle, os_part, SC_R_M4_1_PID0); + } + /* * sc_rm_set_peripheral_permissions * |