diff --git a/arch/arm/include/asm/arch-zynqmp/hardware.h b/arch/arm/include/asm/arch-zynqmp/hardware.h
index 5f4cfe3b6b68b465267e10aa60c144c5005e22bc..5eec999d5f3222c4d28260867d915792af46f724 100644
--- a/arch/arm/include/asm/arch-zynqmp/hardware.h
+++ b/arch/arm/include/asm/arch-zynqmp/hardware.h
@@ -64,7 +64,10 @@ struct iou_scntr_secure {
 
 /* Bootmode setting values */
 #define BOOT_MODES_MASK	0x0000000F
+#define QSPI_MODE_24BIT	0x00000001
+#define QSPI_MODE_32BIT	0x00000002
 #define SD_MODE		0x00000003
+#define NAND_MODE	0x00000004
 #define EMMC_MODE	0x00000006
 #define JTAG_MODE	0x00000000
 
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 63c332f03dc2ce7fda71caffda2636c08dc695b3..cf8d6a4a51db6bd8343f765eb3c84b54bb16ce70 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -83,6 +83,13 @@ int board_late_init(void)
 	bootmode = reg & BOOT_MODES_MASK;
 
 	switch (bootmode) {
+	case JTAG_MODE:
+		setenv("modeboot", "netboot");
+		break;
+	case QSPI_MODE_24BIT:
+	case QSPI_MODE_32BIT:
+		setenv("modeboot", "qspiboot");
+		break;
 	case SD_MODE:
 	case EMMC_MODE:
 		setenv("modeboot", "sdboot");