diff mbox

[U-Boot,6/6] ARM: highbank: setup env from boot source register

Message ID 1328151477-8026-7-git-send-email-robherring2@gmail.com
State Accepted
Commit 4a3ea216414ad762b3718775a65437c13f0accbc
Delegated to: Albert ARIBAUD
Headers show

Commit Message

Rob Herring Feb. 2, 2012, 2:57 a.m. UTC
From: Rob Herring <rob.herring@calxeda.com>

Add support to read the boot src register and set bootcmd env from the
selected bootcmdX env setting.

Based on Linkstation boot choice selection.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
---
 board/highbank/highbank.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
diff mbox

Patch

diff --git a/board/highbank/highbank.c b/board/highbank/highbank.c
index b771cc8..e2dce53 100644
--- a/board/highbank/highbank.c
+++ b/board/highbank/highbank.c
@@ -23,6 +23,7 @@ 
 #include <asm/io.h>
 
 #define HB_SREG_A9_PWR_REQ		0xfff3cf00
+#define HB_SREG_A9_BOOT_SRC_STAT	0xfff3cf04
 #define HB_PWR_SUSPEND			0
 #define HB_PWR_SOFT_RESET		1
 #define HB_PWR_HARD_RESET		2
@@ -54,8 +55,20 @@  int board_eth_init(bd_t *bis)
 
 int misc_init_r(void)
 {
+	char envbuffer[16];
+	u32 boot_choice;
+
 	ahci_init(0xffe08000);
 	scsi_scan(1);
+
+	boot_choice = readl(HB_SREG_A9_BOOT_SRC_STAT) & 0xff;
+	sprintf(envbuffer, "bootcmd%d", boot_choice);
+	if (getenv(envbuffer)) {
+		sprintf(envbuffer, "run bootcmd%d", boot_choice);
+		setenv("bootcmd", envbuffer);
+	} else
+		setenv("bootcmd", "");
+
 	return 0;
 }