summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2018-11-15 18:44:09 -0700
committerTom Rini <trini@konsulko.com>2018-11-26 08:25:37 -0500
commitb0edea3c27af3bf7b959fa190a7fe9d7881153c5 (patch)
treee48319d91713218a49706b7526f147f2d56c7aee /include
parent27028f186d17a25507eb7d5c9b852d8555432679 (diff)
spl: Add support for passing handoff info to U-Boot proper
There is some basic informaton that SPL normally wants to pass through to U-Boot, such as the SDRAM size and bank information. Mkae use of the new bloblist structure for this. Add a new 'handoff' blob which is set up in SPL and passed to U-Boot proper. Also adda test for sandbox_spl that checks that this works correctly and a new 'sb' command to show the information passed from SPL. Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/global_data.h3
-rw-r--r--include/handoff.h36
-rw-r--r--include/spl.h1
3 files changed, 40 insertions, 0 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index ccf361ed88a..dffd6b26026 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -125,6 +125,9 @@ typedef struct global_data {
#if CONFIG_IS_ENABLED(BLOBLIST)
struct bloblist_hdr *bloblist; /* Bloblist information */
struct bloblist_hdr *new_bloblist; /* Relocated blolist info */
+# ifdef CONFIG_SPL
+ struct spl_handoff *spl_handoff;
+# endif
#endif
} gd_t;
#endif
diff --git a/include/handoff.h b/include/handoff.h
new file mode 100644
index 00000000000..aacb0f5ebf2
--- /dev/null
+++ b/include/handoff.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Passing basic information from SPL to U-Boot proper
+ *
+ * Copyright 2018 Google, Inc
+ */
+
+#ifndef __HANDOFF_H
+#define __HANDOFF_H
+
+#if CONFIG_IS_ENABLED(HANDOFF)
+
+#include <asm/handoff.h>
+
+/**
+ * struct spl_handoff - information passed from SPL to U-Boot proper
+ *
+ * @ram_size: Value to use for gd->ram_size
+ */
+struct spl_handoff {
+ struct arch_spl_handoff arch;
+ u64 ram_size;
+#ifdef CONFIG_NR_DRAM_BANKS
+ struct {
+ u64 start;
+ u64 size;
+ } ram_bank[CONFIG_NR_DRAM_BANKS];
+#endif
+};
+
+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);
+#endif
+
+#endif
diff --git a/include/spl.h b/include/spl.h
index 205aaff4b9d..ee92832f0ae 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -11,6 +11,7 @@
/* Platform-specific defines */
#include <linux/compiler.h>
#include <asm/spl.h>
+#include <handoff.h>
/* Value in r0 indicates we booted from U-Boot */
#define UBOOT_NOT_LOADED_FROM_SPL 0x13578642