All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikita Kiryanov <nikita@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 10/12] spl: add support for alternative boot device
Date: Thu, 22 Oct 2015 15:01:18 +0300	[thread overview]
Message-ID: <1445515280-21389-11-git-send-email-nikita@compulab.co.il> (raw)
In-Reply-To: <1445515280-21389-1-git-send-email-nikita@compulab.co.il>

Introduce spl_boot_list array, which defines a list of boot devices
that SPL will try before hanging. By default this list will consist
of only spl_boot_device(), but board_boot_order() can be overridden
by board code to populate the array with custom values.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Igor Grinberg <grinberg@compulab.co.il>
Cc: Tom Rini <trini@konsulko.com>
Cc: Simon Glass <sjg@chromium.org>
---
 common/spl/spl.c | 33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/common/spl/spl.c b/common/spl/spl.c
index 56fccca..7913c52 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -178,6 +178,23 @@ int spl_init(void)
 	return 0;
 }
 
+#ifndef BOOT_DEVICE_NONE
+#define BOOT_DEVICE_NONE 0xdeadbeef
+#endif
+
+static u32 spl_boot_list[] = {
+	BOOT_DEVICE_NONE,
+	BOOT_DEVICE_NONE,
+	BOOT_DEVICE_NONE,
+	BOOT_DEVICE_NONE,
+	BOOT_DEVICE_NONE,
+};
+
+__weak void board_boot_order(u32 *spl_boot_list)
+{
+	spl_boot_list[0] = spl_boot_device();
+}
+
 static int spl_load_image(u32 boot_device)
 {
 	switch (boot_device) {
@@ -247,7 +264,7 @@ static int spl_load_image(u32 boot_device)
 
 void board_init_r(gd_t *dummy1, ulong dummy2)
 {
-	u32 boot_device;
+	int i;
 
 	debug(">>spl:board_init_r()\n");
 
@@ -272,10 +289,18 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 	spl_board_init();
 #endif
 
-	boot_device = spl_boot_device();
-	debug("boot device - %d\n", boot_device);
-	if (spl_load_image(boot_device))
+	board_boot_order(spl_boot_list);
+	for (i = 0; i < ARRAY_SIZE(spl_boot_list) &&
+			spl_boot_list[i] != BOOT_DEVICE_NONE; i++) {
+		if (!spl_load_image(spl_boot_list[i]))
+			break;
+	}
+
+	if (i == ARRAY_SIZE(spl_boot_list) ||
+	    spl_boot_list[i] == BOOT_DEVICE_NONE) {
+		puts("SPL: failed to boot from all boot devices\n");
 		hang();
+	}
 
 	switch (spl_image.os) {
 	case IH_OS_U_BOOT:
-- 
1.9.1

  parent reply	other threads:[~2015-10-22 12:01 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-22 12:01 [U-Boot] [PATCH 00/12] SPL mmc refactor and alternate boot device feature Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 01/12] spl: nand: remove code duplication Nikita Kiryanov
2015-10-22 18:11   ` Scott Wood
2015-10-22 12:01 ` [U-Boot] [PATCH 02/12] spl: mmc: add break statements in spl_mmc_load_image() Nikita Kiryanov
2015-10-22 12:37   ` Hans de Goede
2015-10-22 13:08     ` Nikita Kiryanov
2015-10-22 13:23       ` Hans de Goede
2015-10-22 13:53         ` Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 03/12] spl: mmc: refactor device location code to its own function Nikita Kiryanov
2015-10-22 12:42   ` Hans de Goede
2015-10-22 14:15     ` Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 04/12] spl: mmc: remove #ifdef CONFIG_SPL_OS_BOOT check Nikita Kiryanov
2015-10-22 12:44   ` Hans de Goede
2015-10-22 12:01 ` [U-Boot] [PATCH 05/12] spl: mmc: get rid of #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION check Nikita Kiryanov
2015-10-22 12:47   ` Hans de Goede
2015-10-22 13:40     ` Nikita Kiryanov
2015-10-22 13:49       ` Tom Rini
2015-10-23  9:40         ` Nikita Kiryanov
2015-10-23 14:03           ` Hans de Goede
2015-10-23 14:11             ` Tom Rini
2015-10-22 12:01 ` [U-Boot] [PATCH 06/12] spl: mmc: move fs boot into its own function Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 07/12] spl: mmc: get rid of emmc boot code duplication Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 08/12] spl: change return values of spl_*_load_image() Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 09/12] common: spl: move image load to its own function Nikita Kiryanov
2015-10-22 12:01 ` Nikita Kiryanov [this message]
2015-10-22 12:01 ` [U-Boot] [PATCH 11/12] spl: announce boot devices Nikita Kiryanov
2015-10-22 12:01 ` [U-Boot] [PATCH 12/12] arm: mx6: cm-fx6: define fallback boot devices for spl Nikita Kiryanov
2015-10-22 12:24 ` [U-Boot] [PATCH 00/12] SPL mmc refactor and alternate boot device feature Otavio Salvador
2015-10-23  9:46   ` Nikita Kiryanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1445515280-21389-11-git-send-email-nikita@compulab.co.il \
    --to=nikita@compulab.co.il \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.