summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/lmb.h2
-rw-r--r--lib/Kconfig18
-rw-r--r--lib/lmb.c3
3 files changed, 23 insertions, 0 deletions
diff --git a/include/lmb.h b/include/lmb.h
index 837002121d9..e46abf400c6 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -168,6 +168,8 @@ long lmb_free(phys_addr_t base, phys_size_t size);
void lmb_dump_all(void);
void lmb_dump_all_force(void);
+void lmb_arch_add_memory(void);
+
struct lmb *lmb_get(void);
int lmb_push(struct lmb *store);
void lmb_pop(struct lmb *store);
diff --git a/lib/Kconfig b/lib/Kconfig
index 67a60160dac..3d2011ad4b7 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -1119,6 +1119,24 @@ config SPL_LMB
SPL. This will require a malloc() implementation for defining
the data structures needed for maintaining the LMB memory map.
+config LMB_ARCH_MEM_MAP
+ bool "Add an architecture specific memory map"
+ depends on LMB
+ help
+ Some architectures have special or unique aspects which need
+ consideration when adding memory ranges to the list of available
+ memory map. Enable this config in such scenarios which allow
+ architectures and boards to define their own memory map.
+
+config SPL_LMB_ARCH_MEM_MAP
+ bool "Add an architecture specific memory map"
+ depends on SPL_LMB
+ help
+ Some architectures have special or unique scenarios which need
+ consideration when adding memory ranges to the list of available
+ memory map. Enable this config in such scenarios which allow
+ architectures and boards to define their own memory map.
+
config PHANDLE_CHECK_SEQ
bool "Enable phandle check while getting sequence number"
help
diff --git a/lib/lmb.c b/lib/lmb.c
index e7167f858f0..ae69201d5b7 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -326,6 +326,9 @@ void lmb_add_memory(void)
u64 ram_top = gd->ram_top;
struct bd_info *bd = gd->bd;
+ if (CONFIG_IS_ENABLED(LMB_ARCH_MEM_MAP))
+ return lmb_arch_add_memory();
+
/* Assume a 4GB ram_top if not defined */
if (!ram_top)
ram_top = 0x100000000ULL;