diff options
author | Etienne Carriere <etienne.carriere@linaro.org> | 2018-11-30 12:10:58 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2018-12-03 13:11:43 +0100 |
commit | 7038c397e6943a5d115fecc8a03d2748c522ca92 (patch) | |
tree | 5dd2090a1aa89f00664d9ff595d95f11ad07c80f /core/arch/arm/kernel | |
parent | 850bb29cf2277cd0a2f0ed9805c9cf2f7c8f376e (diff) |
core: concurrent external and embedded DTBs
Introduce get_external_dt() as opposed to get_embedded_dt().
Change get_dt() to return embedded DTB location and falls back
to external DTB location.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Diffstat (limited to 'core/arch/arm/kernel')
-rw-r--r-- | core/arch/arm/kernel/generic_boot.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/core/arch/arm/kernel/generic_boot.c b/core/arch/arm/kernel/generic_boot.c index c0657498..2c68bd5d 100644 --- a/core/arch/arm/kernel/generic_boot.c +++ b/core/arch/arm/kernel/generic_boot.c @@ -475,6 +475,16 @@ static void init_runtime(unsigned long pageable_part __unused) } #endif +void *get_dt(void) +{ + void *fdt = get_embedded_dt(); + + if (!fdt) + fdt = get_external_dt(); + + return fdt; +} + #if defined(CFG_EMBED_DTB) void *get_embedded_dt(void) { @@ -498,8 +508,8 @@ void *get_embedded_dt(void) } #endif /*CFG_EMBED_DTB*/ -#if defined(CFG_DT) && !defined(CFG_EMBED_DTB) -void *get_dt(void) +#if defined(CFG_DT) +void *get_external_dt(void) { assert(cpu_mmu_enabled()); return external_dt.blob; @@ -507,7 +517,7 @@ void *get_dt(void) static void release_external_dt(void) { - /* dt no more reached, reset pointer to invalid */ + /* External DTB no more reached, reset pointer to invalid */ external_dt.blob = NULL; } @@ -934,23 +944,12 @@ static void update_external_dt(void) panic(); } } -#endif /*CFG_DT && !CFG_EMBED_DTB*/ - -#if defined(CFG_DT) && defined(CFG_EMBED_DTB) -void *get_dt(void) -{ - return get_embedded_dt(); -} -#endif - -#ifndef CFG_DT -void *get_dt(void) +#else /*CFG_DT*/ +void *get_external_dt(void) { return NULL; } -#endif -#if !defined(CFG_DT) || defined(CFG_EMBED_DTB) static void release_external_dt(void) { } @@ -968,8 +967,7 @@ static struct core_mmu_phys_mem *get_memory(void *fdt __unused, { return NULL; } - -#endif /*!CFG_DT || CFG_EMBED_DTB*/ +#endif /*!CFG_DT*/ static void discover_nsec_memory(void) { |