]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
imx: imx8qm/qxp: reserving DDR memory for M4
authorPeng Fan <peng.fan@nxp.com>
Tue, 5 May 2020 12:28:37 +0000 (20:28 +0800)
committerStefano Babic <sbabic@denx.de>
Sun, 10 May 2020 18:55:20 +0000 (20:55 +0200)
The DDR memory from 0x88000000 to 0x8FFFFFFF is assigned to M4 on
QM and QXP. The M4 can allocate this memory by two ways,
in SCD or u-boot.

In this patch, u-boot addes the memory reserve node to DTB to pass
the info to kernel, no matter the M4 memory is reserved in SCD
or u-boot. So kernel won't access M4 reserved memory.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/mach-imx/imx8/Kconfig
arch/arm/mach-imx/imx8/fdt.c

index 1f8add015f4eb752470173430327207240130433..69149d3cd51cf4041e00a4b77b0dfd807e236a6d 100644 (file)
@@ -41,6 +41,14 @@ config IMX_CONTAINER_CFG
          This is to specific the cfg file for generating container
          image which will be loaded by SPL.
 
+config BOOTAUX_RESERVED_MEM_BASE
+       hex "i.MX auxiliary core dram memory base"
+       default 0
+
+config BOOTAUX_RESERVED_MEM_SIZE
+       hex "i.MX auxiliary core dram memory size"
+       default 0
+
 choice
        prompt "i.MX8 board select"
        optional
index 65c8ac1a7e20b862af318ec1e2047bddcc59b3b7..599364537862468338af55eb43d86308638354b3 100644 (file)
@@ -8,6 +8,7 @@
 #include <asm/arch/sys_proto.h>
 #include <dm/ofnode.h>
 #include <fdt_support.h>
+#include <linux/libfdt.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -279,6 +280,15 @@ static int ft_add_optee_node(void *fdt, bd_t *bd)
 int ft_system_setup(void *blob, bd_t *bd)
 {
        int ret;
+       int off;
+
+       if (CONFIG_BOOTAUX_RESERVED_MEM_BASE) {
+               off = fdt_add_mem_rsv(blob, CONFIG_BOOTAUX_RESERVED_MEM_BASE,
+                                     CONFIG_BOOTAUX_RESERVED_MEM_SIZE);
+               if (off < 0)
+                       printf("Failed  to reserve memory for bootaux: %s\n",
+                              fdt_strerror(off));
+       }
 
        update_fdt_with_owned_resources(blob);