summaryrefslogtreecommitdiff
path: root/plat/imx/imx8qm/imx8qm_bl31_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'plat/imx/imx8qm/imx8qm_bl31_setup.c')
-rw-r--r--plat/imx/imx8qm/imx8qm_bl31_setup.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/plat/imx/imx8qm/imx8qm_bl31_setup.c b/plat/imx/imx8qm/imx8qm_bl31_setup.c
index b7732fb7..4940f351 100644
--- a/plat/imx/imx8qm/imx8qm_bl31_setup.c
+++ b/plat/imx/imx8qm/imx8qm_bl31_setup.c
@@ -160,8 +160,8 @@ static int lpuart32_serial_init(unsigned int base)
void mx8_partition_resources(void)
{
sc_rm_pt_t secure_part, os_part;
- sc_rm_mr_t mr, mr_record = 64;
- sc_faddr_t start, end;
+ sc_rm_mr_t mr, mr_record = 64, mr_ocram = 64;
+ sc_faddr_t start, end, reg_end;
bool owned, owned2;
sc_err_t err;
int i;
@@ -197,7 +197,11 @@ void mx8_partition_resources(void)
NOTICE("Memreg %u 0x%llx -- 0x%llx\n", mr, start, end);
if (BL31_BASE >= start && (BL31_LIMIT - 1) <= end) {
mr_record = mr; /* Record the mr for ATF running */
- } else {
+ }
+ else if (0 >= start && (OCRAM_BASE + OCRAM_ALIAS_SIZE - 1) <= end) {
+ mr_ocram = mr;
+ }
+ else {
err = sc_rm_assign_memreg(ipc_handle, os_part, mr);
if (err)
ERROR("Memreg assign failed, 0x%llx -- 0x%llx, \
@@ -233,6 +237,25 @@ void mx8_partition_resources(void)
}
}
+ if (mr_ocram != 64) {
+ err = sc_rm_get_memreg_info(ipc_handle, mr_ocram, &start, &end);
+ reg_end = end;
+ if (err) {
+ ERROR("Memreg get info failed, %u\n", mr_ocram);
+ } else {
+ if ((OCRAM_BASE + OCRAM_ALIAS_SIZE - 1) < end) {
+ err = sc_rm_memreg_alloc(ipc_handle, &mr, OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end);
+ if (err) {
+ ERROR("sc_rm_memreg_alloc failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end);
+ } else {
+ err = sc_rm_assign_memreg(ipc_handle, os_part, mr);
+ if (err)
+ ERROR("Memreg assign failed, 0x%llx -- 0x%llx\n", (sc_faddr_t)OCRAM_BASE + OCRAM_ALIAS_SIZE, reg_end);
+ }
+ }
+ }
+ }
+
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,