diff options
Diffstat (limited to 'common/cmd_dfu.c')
| -rw-r--r-- | common/cmd_dfu.c | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c index db066acc3..793c42212 100644 --- a/common/cmd_dfu.c +++ b/common/cmd_dfu.c @@ -19,8 +19,8 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  {  	const char *str_env;  	char *s = "dfu"; +	int ret, i = 0;  	char *env_bkp; -	int ret;  	if (argc < 3)  		return CMD_RET_USAGE; @@ -49,6 +49,15 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	g_dnl_register(s);  	while (1) { +		if (dfu_reset()) +			/* +			 * This extra number of usb_gadget_handle_interrupts() +			 * calls is necessary to assure correct transmission +			 * completion with dfu-util +			 */ +			if (++i == 10) +				goto exit; +  		if (ctrlc())  			goto exit; @@ -60,6 +69,9 @@ done:  	dfu_free_entities();  	free(env_bkp); +	if (dfu_reset()) +		run_command("reset", 0); +  	return CMD_RET_SUCCESS;  } |