]> git.sur5r.net Git - u-boot/commitdiff
ARM: highbank: setup env from boot source register
authorRob Herring <rob.herring@calxeda.com>
Wed, 1 Feb 2012 16:57:57 +0000 (16:57 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Wed, 28 Mar 2012 21:34:27 +0000 (23:34 +0200)
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

index 1e2da783c641a739c03e1af439faad62fde07afc..f41bf05a518c1da4b2134639b67f2cfb1e33c72f 100644 (file)
@@ -24,6 +24,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
@@ -55,8 +56,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;
 }