aboutsummaryrefslogtreecommitdiff
path: root/board/amlogic
diff options
context:
space:
mode:
authorNeil Armstrong <narmstrong@baylibre.com>2017-11-27 10:35:46 +0100
committerTom Rini <trini@konsulko.com>2017-12-04 10:17:29 -0500
commitc7be3e5a796a7b5c92035013d89e8182c7aab6bb (patch)
treeea650521f96872947f9a4b0d4a64f2e5ed9aef8d /board/amlogic
parent5ff2ee44ee7d09c99bdf1be7349c1212149c573c (diff)
downloadu-boot-c7be3e5a796a7b5c92035013d89e8182c7aab6bb.zip
u-boot-c7be3e5a796a7b5c92035013d89e8182c7aab6bb.tar.gz
u-boot-c7be3e5a796a7b5c92035013d89e8182c7aab6bb.tar.bz2
ARM: arch-meson: build memory banks using reported memory from registers
As discussed at [1], the Amlogic Meson GX SoCs can embed a BL31 firmware and a secondary BL32 firmware. Since mid-2017, the reserved memory address of the BL31 firmware was moved and grown for security reasons. But mainline U-Boot and Linux has the old address and size fixed. These SoCs have a register interface to get the two firmware reserved memory start and sizes. This patch adds a dynamic reservation of the memory zones in the device tree bootmem reserved memory zone used by the kernel in early boot. To be complete, the memory zones are also added to the EFI reserved zones. Depends on patchset "Add support for Amlogic GXL Based SBCs" at [2]. [1] http://lists.infradead.org/pipermail/linux-amlogic/2017-October/004860.html [2] http://lists.infradead.org/pipermail/linux-amlogic/2017-November/005410.html Changes since v1: - switched the #if to if(IS_ENABLED()) to compile all code paths - renamed function to meson_board_add_reserved_memory() - added a mem.h header with comment - updated all boards ft_board_setup() Changes since RFC v2: - reduced preprocessor load - kept Odroid-C2 static memory mapping as exception Changes since RFC v1: - switch to fdt rsv mem table and efi reserve memory - replaced in_le32 by readl() Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> [trini: Fix warning on khadas-vim over missing <asm/arch/mem.h> Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'board/amlogic')
-rw-r--r--board/amlogic/khadas-vim/khadas-vim.c8
-rw-r--r--board/amlogic/libretech-cc/libretech-cc.c8
-rw-r--r--board/amlogic/odroid-c2/odroid-c2.c8
-rw-r--r--board/amlogic/p212/p212.c8
4 files changed, 32 insertions, 0 deletions
diff --git a/board/amlogic/khadas-vim/khadas-vim.c b/board/amlogic/khadas-vim/khadas-vim.c
index db9c292..5e19856 100644
--- a/board/amlogic/khadas-vim/khadas-vim.c
+++ b/board/amlogic/khadas-vim/khadas-vim.c
@@ -9,6 +9,7 @@
#include <dm.h>
#include <asm/io.h>
#include <asm/arch/gxbb.h>
+#include <asm/arch/mem.h>
#include <asm/arch/sm.h>
#include <asm/arch/eth.h>
@@ -47,3 +48,10 @@ int misc_init_r(void)
return 0;
}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+ meson_gx_init_reserved_memory(blob);
+
+ return 0;
+}
diff --git a/board/amlogic/libretech-cc/libretech-cc.c b/board/amlogic/libretech-cc/libretech-cc.c
index 26c0e78..6be6e2a 100644
--- a/board/amlogic/libretech-cc/libretech-cc.c
+++ b/board/amlogic/libretech-cc/libretech-cc.c
@@ -11,6 +11,7 @@
#include <asm/arch/gxbb.h>
#include <asm/arch/sm.h>
#include <asm/arch/eth.h>
+#include <asm/arch/mem.h>
#define EFUSE_SN_OFFSET 20
#define EFUSE_SN_SIZE 16
@@ -51,3 +52,10 @@ int misc_init_r(void)
return 0;
}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+ meson_gx_init_reserved_memory(blob);
+
+ return 0;
+}
diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c
index d68d0f1..0cb5714 100644
--- a/board/amlogic/odroid-c2/odroid-c2.c
+++ b/board/amlogic/odroid-c2/odroid-c2.c
@@ -10,6 +10,7 @@
#include <asm/arch/gxbb.h>
#include <asm/arch/sm.h>
#include <asm/arch/eth.h>
+#include <asm/arch/mem.h>
#define EFUSE_SN_OFFSET 20
#define EFUSE_SN_SIZE 16
@@ -54,3 +55,10 @@ int misc_init_r(void)
return 0;
}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+ meson_gx_init_reserved_memory(blob);
+
+ return 0;
+}
diff --git a/board/amlogic/p212/p212.c b/board/amlogic/p212/p212.c
index 2b6d88a..5fde534 100644
--- a/board/amlogic/p212/p212.c
+++ b/board/amlogic/p212/p212.c
@@ -11,6 +11,7 @@
#include <asm/arch/gxbb.h>
#include <asm/arch/sm.h>
#include <asm/arch/eth.h>
+#include <asm/arch/mem.h>
#define EFUSE_SN_OFFSET 20
#define EFUSE_SN_SIZE 16
@@ -46,3 +47,10 @@ int misc_init_r(void)
return 0;
}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+ meson_gx_init_reserved_memory(blob);
+
+ return 0;
+}