aboutsummaryrefslogtreecommitdiff
path: root/core/arch/arm/kernel
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@linaro.org>2018-11-30 12:10:58 +0100
committerJérôme Forissier <jerome.forissier@linaro.org>2018-12-03 13:11:43 +0100
commit7038c397e6943a5d115fecc8a03d2748c522ca92 (patch)
tree5dd2090a1aa89f00664d9ff595d95f11ad07c80f /core/arch/arm/kernel
parent850bb29cf2277cd0a2f0ed9805c9cf2f7c8f376e (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.c34
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)
{