xilinx: versal: Add usb dfu/thor distro boot support
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>
Wed, 31 Mar 2021 05:24:57 +0000 (23:24 -0600)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 23 Apr 2021 06:45:55 +0000 (08:45 +0200)
Change "dfu_usb" to "usb_dfu" for better representation and change
required macros. Add 60s timeout of dfu-utils to start transaction.
Add support for usb thor to distro boot. Remove DFU_ALT_INFO_RAM
as we use bootcmd_usb_dfu instead of dfu_ram.

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

index b175064..6045eb2 100644 (file)
@@ -130,7 +130,7 @@ int board_late_init(void)
        switch (bootmode) {
        case USB_MODE:
                puts("USB_MODE\n");
-               mode = "dfu_usb";
+               mode = "usb_dfu0 usb_dfu1";
                break;
        case JTAG_MODE:
                puts("JTAG_MODE\n");
index f1d2594..380f93a 100644 (file)
 #define CONFIG_SYS_DFU_DATA_BUF_SIZE   0x1800000
 #define DFU_DEFAULT_POLL_TIMEOUT       300
 #define CONFIG_THOR_RESET_OFF
-#define DFU_ALT_INFO_RAM \
-       "dfu_ram_info=" \
-       "setenv dfu_alt_info " \
-       "Image ram 80000 $kernel_size_r\\\\;" \
-       "system.dtb ram $fdt_addr_r $fdt_size_r\0" \
-       "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
-       "thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
-
-#define DFU_ALT_INFO  \
-               DFU_ALT_INFO_RAM
-#endif
-
-#if !defined(DFU_ALT_INFO)
-# define DFU_ALT_INFO
 #endif
 
 /* Ethernet driver */
 #define BOOTENV_DEV_NAME_JTAG(devtypeu, devtypel, instance) \
        "jtag "
 
-#define BOOT_TARGET_DEVICES_DFU_USB(func)  func(DFU_USB, dfu_usb, 0)
+#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_DFU_USB(devtypeu, devtypel, instance) \
-       "bootcmd_dfu_usb=setenv dfu_alt_info boot.scr ram $scriptaddr " \
-       "$script_size_f; dfu 0 ram 0 && " \
-       "echo DFU: Trying to boot script at ${scriptaddr} && " \
+#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 DFU: SCRIPT FAILED: continuing...;\0"
+       "echo THOR" #instance ": SCRIPT FAILED: continuing...;\0"
 
-#define BOOTENV_DEV_NAME_DFU_USB(devtypeu, devtypel, instance) \
-       "dfu_usb "
+#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_XSPI(func) \
-       BOOT_TARGET_DEVICES_DFU_USB(func) \
+       BOOT_TARGET_DEVICES_USB_DFU(func) \
+       BOOT_TARGET_DEVICES_USB_THOR(func) \
        BOOT_TARGET_DEVICES_PXE(func) \
        BOOT_TARGET_DEVICES_DHCP(func)
 
 #ifndef CONFIG_EXTRA_ENV_SETTINGS
 #define CONFIG_EXTRA_ENV_SETTINGS \
        ENV_MEM_LAYOUT_SETTINGS \
-       BOOTENV \
-       DFU_ALT_INFO
+       BOOTENV
 #endif
 
 #endif /* __XILINX_VERSAL_H */