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>
#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 */
#include <netdev.h>
#include <asm/arch/hardware.h>
#include <asm/arch/sys_proto.h>
+#include <asm/io.h>
DECLARE_GLOBAL_DATA_PTR;
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;
+}
"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