Skip to content

Commit

Permalink
dfu: Fix up the Kconfig mess
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Lukasz Majewski <[email protected]>
  • Loading branch information
marex authored and Marek Vasut committed Feb 21, 2018
1 parent 462c117 commit 0f44d33
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cmd/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ config CMD_DEMO

config CMD_DFU
bool "dfu"
select USB_FUNCTION_DFU
select DFU
help
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"
Expand Down
18 changes: 13 additions & 5 deletions cmd/dfu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
Expand All @@ -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"
Expand Down
6 changes: 4 additions & 2 deletions common/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,9 @@ endif # !CONFIG_SPL_BUILD
obj-$(CONFIG_$(SPL_TPL_)BOOTSTAGE) += bootstage.o

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_HASH_SUPPORT) += hash.o
obj-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o
Expand Down Expand Up @@ -128,7 +130,7 @@ endif

obj-y += cli.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-$(CONFIG_$(SPL_)LOG) += log.o
obj-$(CONFIG_$(SPL_)LOG_CONSOLE) += log_console.o
Expand Down
12 changes: 11 additions & 1 deletion drivers/dfu/Kconfig
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
menu "DFU support"

config DFU
bool
imply USB_FUNCTION_DFU if USB_GADGET

config USB_FUNCTION_DFU
bool
select HASH
depends on USB_GADGET

config TFTP_FUNCTION_DFU
bool
depends on NET

if CMD_DFU
if DFU
config DFU_TFTP
bool "DFU via TFTP"
select TFTP_FUNCTION_DFU
help
This option allows performing update of DFU-managed medium with data
sent via TFTP boot.
Expand Down
2 changes: 1 addition & 1 deletion drivers/dfu/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# 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_NAND) += dfu_nand.o
obj-$(CONFIG_DFU_RAM) += dfu_ram.o
Expand Down

0 comments on commit 0f44d33

Please sign in to comment.