]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
ultrascale: Added QSPI and SD autoboot support
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Mon, 9 Jun 2014 10:08:36 +0000 (15:38 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 10 Jun 2014 22:54:21 +0000 (00:54 +0200)
Added QSPI and SD autoboot support.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/include/asm/arch-ultrascale/hardware.h
board/xilinx/ultrascale/ultrascale.c
include/configs/xilinx_ultrascale.h

index ed56f45453a08c08851a4a74dad90c053f7f8a11..f6ede5b050d90d2a3718b627ab6a339f9975617a 100644 (file)
 #define ZYNQ_SDHCI_BASEADDR0   0xFF014000
 #define ZYNQ_SDHCI_BASEADDR1   0xFF015000
 
+#define ZYNQMP_CRL_APB_BASEADDR        0xFF400000
+
+struct crlapb_regs {
+       u32 reserved0[128];
+       u32 boot_mode;
+       u32 reserved1[26];
+};
+
+#define crlapb_base ((struct crlapb_regs *)ZYNQMP_CRL_APB_BASEADDR)
+
+/* Bootmode setting values */
+#define BOOT_MODES_MASK        0x0000000F
+#define QSPI_MODE      0x00000001
+#define SD_MODE                0x00000005
+#define JTAG_MODE      0x00000000
+
 #endif /* _ASM_ARCH_HARDWARE_H */
index c26bf85a672635317df0c91c885ae5658b569b0f..d477402753f424bb18c65cc409bb12896fac70da 100644 (file)
@@ -9,6 +9,7 @@
 #include <netdev.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <asm/io.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -74,3 +75,29 @@ int board_mmc_init(bd_t *bd)
         return ret;
 }
 #endif
+
+int board_late_init(void)
+{
+       u32 reg = 0;
+       u8 bootmode;
+
+       reg = readl(&crlapb_base->boot_mode);
+       bootmode = reg & BOOT_MODES_MASK;
+
+       switch (bootmode) {
+       case JTAG_MODE:
+               setenv("modeboot", "netboot");
+               break;
+       case QSPI_MODE:
+               setenv("modeboot", "qspiboot");
+               break;
+       case SD_MODE:
+               setenv("modeboot", "sdboot");
+               break;
+       default:
+               printf("Invalid Boot Mode:0x%x\n", bootmode);
+               break;
+       }
+
+       return 0;
+}
index c0fe01b16c41d123a60a56a2730a8010ac0a107b..ff1ebe1ce6e085f5d7f906ca1a03720dfe4f881e 100644 (file)
                "bootm 1000000 - 20000000\0"
 
 #define CONFIG_BOOTARGS                "console=ttyPS0"
-#define CONFIG_BOOTCOMMAND     "echo Hello Xilinx UltraScale MP; run netboot"
+#define CONFIG_BOOTCOMMAND     "echo Hello Xilinx UltraScale MP; run $modeboot"
 #define CONFIG_BOOTDELAY       5
 
+#define CONFIG_BOARD_LATE_INIT
+
 /* Do not preserve environment */
 #define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_SIZE                        0x1000