At present there is an arch-specific area in the SPL handoff area intended
for use by arch-specific code, but there is no explicit call to fill in
this data. Add a hook for this.

Also use the hook to remove the sandbox-specific test code from
write_spl_handoff().

Signed-off-by: Simon Glass <s...@chromium.org>
---

Changes in v2: None

 arch/sandbox/cpu/spl.c |  7 +++++++
 common/spl/spl.c       | 12 +++++++++---
 include/handoff.h      | 13 +++++++++++++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/arch/sandbox/cpu/spl.c b/arch/sandbox/cpu/spl.c
index 4f415c71d63..44c68a39bc6 100644
--- a/arch/sandbox/cpu/spl.c
+++ b/arch/sandbox/cpu/spl.c
@@ -78,3 +78,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info 
*spl_image)
        }
        hang();
 }
+
+int handoff_arch_save(struct spl_handoff *ho)
+{
+       ho->arch.magic = TEST_HANDOFF_MAGIC;
+
+       return 0;
+}
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 082fa2bd94d..730cd6b3084 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -356,17 +356,23 @@ static int setup_spl_handoff(void)
        return 0;
 }
 
+__weak int handoff_arch_save(struct spl_handoff *ho)
+{
+       return 0;
+}
+
 static int write_spl_handoff(void)
 {
        struct spl_handoff *ho;
+       int ret;
 
        ho = bloblist_find(BLOBLISTT_SPL_HANDOFF, sizeof(struct spl_handoff));
        if (!ho)
                return -ENOENT;
        handoff_save_dram(ho);
-#ifdef CONFIG_SANDBOX
-       ho->arch.magic = TEST_HANDOFF_MAGIC;
-#endif
+       ret = handoff_arch_save(ho);
+       if (ret)
+               return ret;
        debug(SPL_TPL_PROMPT "Wrote SPL handoff\n");
 
        return 0;
diff --git a/include/handoff.h b/include/handoff.h
index aacb0f5ebf2..75d19b1f6e5 100644
--- a/include/handoff.h
+++ b/include/handoff.h
@@ -31,6 +31,19 @@ struct spl_handoff {
 void handoff_save_dram(struct spl_handoff *ho);
 void handoff_load_dram_size(struct spl_handoff *ho);
 void handoff_load_dram_banks(struct spl_handoff *ho);
+
+/**
+ * handoff_arch_save() - Save arch-specific info into the handoff area
+ *
+ * This is defined to an empty function by default, but arch-specific code can
+ * define it to write to spi_handoff->arch. It is called from
+ * write_spl_handoff().
+ *
+ * @ho: Handoff area to fill in
+ * @return 0 if OK, -ve on error
+ */
+int handoff_arch_save(struct spl_handoff *ho);
+
 #endif
 
 #endif
-- 
2.23.0.444.g18eeb5a265-goog

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to