summaryrefslogtreecommitdiff
path: root/plat/freescale/imx8qm/imx8qm_bl31_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'plat/freescale/imx8qm/imx8qm_bl31_setup.c')
-rw-r--r--plat/freescale/imx8qm/imx8qm_bl31_setup.c73
1 files changed, 42 insertions, 31 deletions
diff --git a/plat/freescale/imx8qm/imx8qm_bl31_setup.c b/plat/freescale/imx8qm/imx8qm_bl31_setup.c
index bf36d920..c4e2aeae 100644
--- a/plat/freescale/imx8qm/imx8qm_bl31_setup.c
+++ b/plat/freescale/imx8qm/imx8qm_bl31_setup.c
@@ -189,46 +189,57 @@ static int lpuart32_serial_init(unsigned int base)
void mx8_partition_resources(void)
{
- sc_err_t err;
- sc_rm_pt_t secure_part, os_part;
- int i;
+ sc_err_t err;
+ sc_rm_pt_t secure_part, os_part;
+ sc_rm_mr_t mr;
+ int i;
- err = sc_rm_get_partition(ipc_handle, &secure_part);
+ err = sc_rm_get_partition(ipc_handle, &secure_part);
- err = sc_rm_partition_alloc(ipc_handle, &os_part, false, false,
- false, false, false);
+ err = sc_rm_partition_alloc(ipc_handle, &os_part, false, false,
+ false, false, false);
- err = sc_rm_set_parent(ipc_handle, os_part, secure_part);
+ err = sc_rm_set_parent(ipc_handle, os_part, secure_part);
- /* set secure resources to NOT-movable */
- for(i = 0; i<(sizeof(secure_rsrcs)/sizeof(sc_rsrc_t)); i++){
- err = sc_rm_set_resource_movable(ipc_handle, secure_rsrcs[i],
- secure_rsrcs[i], false);
+ /* set secure resources to NOT-movable */
+ for (i = 0; i < (sizeof(secure_rsrcs) / sizeof(sc_rsrc_t)); i++) {
+ err = sc_rm_set_resource_movable(ipc_handle, secure_rsrcs[i],
+ secure_rsrcs[i], false);
+ }
- }
+ /* move all movable resources and pins to non-secure partition */
+ err = sc_rm_move_all(ipc_handle, secure_part, os_part, true, true);
- /* move all movable resources and pins to non-secure partition */
- err = sc_rm_move_all(ipc_handle, secure_part, os_part, true, true);
+ /* iterate through peripherals to give NS OS part access */
+ for (i = 0; i < (sizeof(ns_access_allowed) / sizeof(sc_rsrc_t)); i++) {
+ err = sc_rm_set_peripheral_permissions(ipc_handle, ns_access_allowed[i],
+ os_part, SC_RM_PERM_FULL);
+ }
- /* iterate through peripherals to give NS OS part access */
- for(i = 0; i<(sizeof(ns_access_allowed)/sizeof(sc_rsrc_t)); i++){
- err = sc_rm_set_peripheral_permissions(ipc_handle, ns_access_allowed[i],
- os_part, SC_RM_PERM_FULL);
- }
+ /*
+ * sc_rm_set_peripheral_permissions
+ *
+ * sc_rm_set_memreg_permissions
+ *
+ * sc_rm_set_pin_movable
+ *
+ */
- /*
- * sc_rm_set_peripheral_permissions
- *
- * sc_rm_set_memreg_permissions
- *
- * sc_rm_set_pin_movable
- *
- */
+ for (i = 0; i < (sizeof(ns_mem_region) / sizeof(struct mem_region)); i++) {
+ err = sc_rm_memreg_alloc(ipc_handle, &mr, ns_mem_region[i].start, ns_mem_region[i].end);
+ if (err) {
+ ERROR("Memreg alloc failed, 0x%lx -- 0x%lx\n", ns_mem_region[i].start, ns_mem_region[i].end);
+ } else {
+ err = sc_rm_assign_memreg(ipc_handle, os_part, mr);
+ if (err)
+ ERROR("Memreg assign failed, 0x%lx -- 0x%lx\n", ns_mem_region[i].start, ns_mem_region[i].end);
+ }
+ }
- if(err)
- NOTICE("Partitioning Failed\n");
- else
- NOTICE("Non-secure Partitioning Succeeded\n");
+ if (err)
+ NOTICE("Partitioning Failed\n");
+ else
+ NOTICE("Non-secure Partitioning Succeeded\n");
}