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>
master
Marek Vasut 6 years ago committed by Marek Vasut
parent 462c117ce0
commit 0f44d33536
  1. 2
      cmd/Kconfig
  2. 18
      cmd/dfu.c
  3. 6
      common/Makefile
  4. 12
      drivers/dfu/Kconfig
  5. 2
      drivers/dfu/Makefile

@ -588,7 +588,7 @@ config CMD_DEMO
config CMD_DFU config CMD_DFU
bool "dfu" bool "dfu"
select USB_FUNCTION_DFU select DFU
help help
Enables the command "dfu" which is used to have U-Boot create a DFU Enables the command "dfu" which is used to have U-Boot create a DFU
class device via USB. This command requires that the "dfu_alt_info" class device via USB. This command requires that the "dfu_alt_info"

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

@ -66,7 +66,9 @@ endif # !CONFIG_SPL_BUILD
obj-$(CONFIG_$(SPL_TPL_)BOOTSTAGE) += bootstage.o obj-$(CONFIG_$(SPL_TPL_)BOOTSTAGE) += bootstage.o
ifdef CONFIG_SPL_BUILD ifdef CONFIG_SPL_BUILD
obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu.o ifdef CONFIG_SPL_DFU_SUPPORT
obj-$(CONFIG_USB_FUNCTION_DFU) += dfu.o
endif
obj-$(CONFIG_SPL_DFU_SUPPORT) += cli_hush.o obj-$(CONFIG_SPL_DFU_SUPPORT) += cli_hush.o
obj-$(CONFIG_SPL_HASH_SUPPORT) += hash.o obj-$(CONFIG_SPL_HASH_SUPPORT) += hash.o
obj-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o obj-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o
@ -128,7 +130,7 @@ endif
obj-y += cli.o obj-y += cli.o
obj-$(CONFIG_FSL_DDR_INTERACTIVE) += cli_simple.o cli_readline.o obj-$(CONFIG_FSL_DDR_INTERACTIVE) += cli_simple.o cli_readline.o
obj-$(CONFIG_CMD_DFU) += dfu.o obj-$(CONFIG_USB_FUNCTION_DFU) += dfu.o
obj-y += command.o obj-y += command.o
obj-$(CONFIG_$(SPL_)LOG) += log.o obj-$(CONFIG_$(SPL_)LOG) += log.o
obj-$(CONFIG_$(SPL_)LOG_CONSOLE) += log_console.o obj-$(CONFIG_$(SPL_)LOG_CONSOLE) += log_console.o

@ -1,12 +1,22 @@
menu "DFU support" menu "DFU support"
config DFU
bool
imply USB_FUNCTION_DFU if USB_GADGET
config USB_FUNCTION_DFU config USB_FUNCTION_DFU
bool bool
select HASH select HASH
depends on USB_GADGET
config TFTP_FUNCTION_DFU
bool
depends on NET
if CMD_DFU if DFU
config DFU_TFTP config DFU_TFTP
bool "DFU via TFTP" bool "DFU via TFTP"
select TFTP_FUNCTION_DFU
help help
This option allows performing update of DFU-managed medium with data This option allows performing update of DFU-managed medium with data
sent via TFTP boot. sent via TFTP boot.

@ -5,7 +5,7 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
# #
obj-$(CONFIG_USB_FUNCTION_DFU) += dfu.o obj-$(CONFIG_DFU) += dfu.o
obj-$(CONFIG_DFU_MMC) += dfu_mmc.o obj-$(CONFIG_DFU_MMC) += dfu_mmc.o
obj-$(CONFIG_DFU_NAND) += dfu_nand.o obj-$(CONFIG_DFU_NAND) += dfu_nand.o
obj-$(CONFIG_DFU_RAM) += dfu_ram.o obj-$(CONFIG_DFU_RAM) += dfu_ram.o

Loading…
Cancel
Save