diff options
Diffstat (limited to 'common/cmd_dfu.c')
| -rw-r--r-- | common/cmd_dfu.c | 30 | 
1 files changed, 18 insertions, 12 deletions
| diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c index 7ce92cec8..554767820 100644 --- a/common/cmd_dfu.c +++ b/common/cmd_dfu.c @@ -11,27 +11,32 @@  #include <common.h>  #include <dfu.h>  #include <g_dnl.h> +#include <usb.h>  static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  { +	if (argc < 4) +		return CMD_RET_USAGE; + +	char *usb_controller = argv[1]; +	char *interface = argv[2]; +	char *devstring = argv[3]; +  	char *s = "dfu";  	int ret, i = 0; -	if (argc < 3) -		return CMD_RET_USAGE; - -	ret = dfu_init_env_entities(argv[1], simple_strtoul(argv[2], NULL, 10)); +	ret = dfu_init_env_entities(interface, simple_strtoul(devstring, +							      NULL, 10));  	if (ret)  		return ret; -	if (argc > 3 && strcmp(argv[3], "list") == 0) { +	if (argc > 4 && strcmp(argv[4], "list") == 0) {  		dfu_show_entities();  		goto done;  	} -#ifdef CONFIG_TRATS -	board_usb_init(); -#endif +	int controller_index = simple_strtoul(usb_controller, NULL, 0); +	board_usb_init(controller_index, USB_INIT_DEVICE);  	g_dnl_register(s);  	while (1) { @@ -62,8 +67,9 @@ done:  U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,  	"Device Firmware Upgrade", -	"<interface> <dev> [list]\n" -	"  - device firmware upgrade on a device <dev>\n" -	"    attached to interface <interface>\n" -	"    [list] - list available alt settings" +	"<USB_controller> <interface> <dev> [list]\n" +	"  - device firmware upgrade via <USB_controller>\n" +	"    on device <dev>, attached to interface\n" +	"    <interface>\n" +	"    [list] - list available alt settings\n"  ); |