aboutsummaryrefslogtreecommitdiff
path: root/common/spl/spl_bootrom.c
diff options
context:
space:
mode:
authorPhilipp Tomsich2017-06-22 23:38:36 +0200
committerPhilipp Tomsich2017-08-13 17:12:19 +0200
commit225d30b70846eb534bc6b607d67c959ab05beaa5 (patch)
tree8243d035fee681f9e390f4e0059c70402d92f4da /common/spl/spl_bootrom.c
parentda0227f7d2568c0cb0e435ed3caf780f9846d9a0 (diff)
spl: add a 'return to bootrom' boot method
Some devices (e.g. the RK3368) have only limited SRAM, but provide support for loading the next boot stage after our SPL performs basic setup (e.g. DRAM). For target systems like these, we add a boot device BOOTROM that will invoke a board-specific hook to return to the bootrom (if supported). Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/spl/spl_bootrom.c')
-rw-r--r--common/spl/spl_bootrom.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/common/spl/spl_bootrom.c b/common/spl/spl_bootrom.c
new file mode 100644
index 00000000000..6804246d03f
--- /dev/null
+++ b/common/spl/spl_bootrom.c
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2017 Theobroma Systems Design und Consulting GmH
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+__weak void board_return_to_bootrom(void)
+{
+}
+
+static int spl_return_to_bootrom(struct spl_image_info *spl_image,
+ struct spl_boot_device *bootdev)
+{
+ /*
+ * If the board implements a way to return to its ROM (with
+ * the expectation that the next stage of will be booted by
+ * the ROM), it will implement board_return_to_bootrom() and
+ * should not return from it.
+ */
+ board_return_to_bootrom();
+ return false;
+}
+
+SPL_LOAD_IMAGE_METHOD("BOOTROM", 0, BOOT_DEVICE_BOOTROM, spl_return_to_bootrom);