]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/highbank/highbank.c
omap5912-osk: Fix DRAM initialisation
[karo-tx-uboot.git] / board / highbank / highbank.c
index 096e2f63727b14ed9987695c4b77a426d298257b..09cd45d3744154722d39dd4f5c1cb8dbe3fe2570 100644 (file)
 #include <asm/sizes.h>
 #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
+#define HB_PWR_SHUTDOWN                        3
+
 DECLARE_GLOBAL_DATA_PTR;
 
 /*
@@ -49,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;
 }
 
@@ -68,4 +87,7 @@ void dram_init_banksize(void)
 
 void reset_cpu(ulong addr)
 {
+       writel(HB_PWR_HARD_RESET, HB_SREG_A9_PWR_REQ);
+
+       wfi();
 }