dfu: Fix up the Kconfig mess

Clean up the screaming mess of configuration options that DFU is.
It was impossible to configure DFU such that TFTP is enabled and
USB is not, this patch fixes that and assures that DFU TFTP and
DFU USB can be enabled separatelly and that the correct pieces
of code are compiled in.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Marek Vasut
2018-02-16 16:41:17 +01:00
committed by Marek Vasut
parent 462c117ce0
commit 0f44d33536
5 changed files with 30 additions and 10 deletions

View File

@ -25,12 +25,14 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (argc < 4)
return CMD_RET_USAGE;
#ifdef CONFIG_USB_FUNCTION_DFU
char *usb_controller = argv[1];
#endif
char *interface = argv[2];
char *devstring = argv[3];
int ret;
#ifdef CONFIG_DFU_TFTP
int ret = 0;
#ifdef CONFIG_TFTP_FUNCTION_DFU
unsigned long addr = 0;
if (!strcmp(argv[1], "tftp")) {
if (argc == 5)
@ -39,7 +41,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return update_tftp(addr, interface, devstring);
}
#endif
#ifdef CONFIG_USB_FUNCTION_DFU
ret = dfu_init_env_entities(interface, devstring);
if (ret)
goto done;
@ -56,18 +58,24 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
done:
dfu_free_entities();
#endif
return ret;
}
U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
"Device Firmware Upgrade",
#ifdef CONFIG_USB_FUNCTION_DFU
"<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"
#ifdef CONFIG_DFU_TFTP
"dfu tftp <interface> <dev> [<addr>]\n"
#endif
#ifdef CONFIG_TFTP_FUNCTION_DFU
#ifdef CONFIG_USB_FUNCTION_DFU
"dfu "
#endif
"tftp <interface> <dev> [<addr>]\n"
" - device firmware upgrade via TFTP\n"
" on device <dev>, attached to interface\n"
" <interface>\n"