浏览代码

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>
Rob Herring 13 年之前
父节点
当前提交
4a3ea21641
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      board/highbank/highbank.c

+ 13 - 0
board/highbank/highbank.c

@@ -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;
 }