spl: Add an arch-specific hook for writing to SPL handoff
authorSimon Glass <sjg@chromium.org>
Wed, 25 Sep 2019 14:11:18 +0000 (08:11 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 8 Oct 2019 05:51:03 +0000 (13:51 +0800)
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 <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/sandbox/cpu/spl.c
common/spl/spl.c
include/handoff.h

index 4f415c71d63227272db33cb7a761409f9814d8f1..44c68a39bc628e75115b6e693c9d5c30061a79a3 100644 (file)
@@ -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;
+}
index 082fa2bd94d7ce47a235a4841bced1fbd307871d..730cd6b308446506ae773b204048d9304f9d4fbb 100644 (file)
@@ -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;
index aacb0f5ebf2e6e8736fcfabce4d7f39ab5bf27de..75d19b1f6e511174cf48eac30b8d0dd8e6914c3d 100644 (file)
@@ -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