aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Herring <rob.herring@calxeda.com>2012-01-05 21:03:01 -0600
committerJohn Rigby <john.rigby@linaro.org>2012-02-07 17:03:51 -0800
commitc81d1b4678cd09f700ec8ea97477f105fa4ef16e (patch)
tree5f4c17726c533c3975283cd4882c409ac41adff4
parent497b7612ecd89b84ff781b2ee1fba5031f7d89a0 (diff)
ARM: highbank: setup env from boot source register
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>
-rw-r--r--board/highbank/highbank.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/board/highbank/highbank.c b/board/highbank/highbank.c
index c4d7f3dd4..63082b464 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,9 +55,21 @@ int board_eth_init(bd_t *bis)
int misc_init_r(void)
{
+ char envbuffer[16];
+ u32 boot_choice;
+
ahci_init(0xffe08000);
scsi_scan(1);
- return 0;
+
+ 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;
}
int dram_init(void)