]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
xilinx: zynqmp: Add usb dfu/thor distro boot support
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>
Thu, 25 Mar 2021 05:37:57 +0000 (23:37 -0600)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 23 Apr 2021 06:45:55 +0000 (08:45 +0200)
In usb boot mode distro boot should select usb device as primary boot
device instead of usb host. So make usb dfu as primary boot device. But do
not list it in boot_targets as fallback option because it is not classic
mode for booting. Using 60s timeout by default should be enough time for
dfu-utils to start transaction. In case none needs this please change
timeout value in the command or disable CONFIG_DFU_TIMEOUT.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board/xilinx/zynqmp/zynqmp.c
configs/xilinx_zynqmp_virt_defconfig
include/configs/xilinx_zynqmp.h

index 23c12f45eabfb9e49323966cf3329cb8bb9f707c..d05f0b2e120258b3e81f27d56515512b90e5e100 100644 (file)
@@ -571,7 +571,7 @@ int board_late_init(void)
        switch (bootmode) {
        case USB_MODE:
                puts("USB_MODE\n");
-               mode = "usb";
+               mode = "usb_dfu0 usb_dfu1";
                env_set("modeboot", "usb_dfu_spl");
                break;
        case JTAG_MODE:
index db7d3824d7d959381e750dd21429c98f9b743650..810bbdb022b2a2a88ca01db150599f718217a8b8 100644 (file)
@@ -81,6 +81,7 @@ CONFIG_SCSI_AHCI=y
 CONFIG_SATA_CEVA=y
 CONFIG_CLK_ZYNQMP=y
 CONFIG_DFU_TFTP=y
+CONFIG_DFU_TIMEOUT=y
 CONFIG_DFU_RAM=y
 CONFIG_USB_FUNCTION_FASTBOOT=y
 CONFIG_FASTBOOT_FLASH=y
index 15ad4198a6be45126ec533a98c5ea4137213809b..87704ff630777f85a06041900bee31b9999dd154 100644 (file)
 #define BOOTENV_DEV_NAME_JTAG(devtypeu, devtypel, instance) \
        "jtag "
 
+#define BOOT_TARGET_DEVICES_USB_DFU(func) \
+       func(USB_DFU, usb_dfu, 0) func(USB_DFU, usb_dfu, 1)
+
+#define BOOTENV_DEV_USB_DFU(devtypeu, devtypel, instance) \
+       "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \
+       "$scriptaddr $script_size_f && " \
+       "dfu " #instance " ram " #instance " 60 && " \
+       "echo DFU" #instance ": Trying to boot script at ${scriptaddr} && " \
+       "source ${scriptaddr}; " \
+       "echo DFU" #instance ": SCRIPT FAILED: continuing...;\0"
+
+#define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance) \
+       ""
+
+#define BOOT_TARGET_DEVICES_USB_THOR(func) \
+       func(USB_THOR, usb_thor, 0) func(USB_THOR, usb_thor, 1)
+
+#define BOOTENV_DEV_USB_THOR(devtypeu, devtypel, instance) \
+       "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \
+       "$scriptaddr $script_size_f && " \
+       "thordown " #instance " ram " #instance " && " \
+       "echo THOR" #instance ": Trying to boot script at ${scriptaddr} && " \
+       "source ${scriptaddr}; " \
+       "echo THOR" #instance ": SCRIPT FAILED: continuing...;\0"
+
+#define BOOTENV_DEV_NAME_USB_THOR(devtypeu, devtypel, instance) \
+       ""
+
 #define BOOT_TARGET_DEVICES(func) \
        BOOT_TARGET_DEVICES_JTAG(func) \
        BOOT_TARGET_DEVICES_MMC(func) \
        BOOT_TARGET_DEVICES_QSPI(func) \
        BOOT_TARGET_DEVICES_NAND(func) \
+       BOOT_TARGET_DEVICES_USB_DFU(func) \
+       BOOT_TARGET_DEVICES_USB_THOR(func) \
        BOOT_TARGET_DEVICES_USB(func) \
        BOOT_TARGET_DEVICES_SCSI(func) \
        BOOT_TARGET_DEVICES_PXE(func) \