summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2018-02-16 16:41:17 +0100
committerMarek Vasut <marex@denx.de>2018-02-21 20:28:15 +0100
commit0f44d33536a50ef65259c322fa2d4a058585caf9 (patch)
treef5d6bdf37d4651509051faa0efd7c4de415d764b
parent462c117ce045571fef86f88fad3be8b3117897b1 (diff)
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>
-rw-r--r--cmd/Kconfig2
-rw-r--r--cmd/dfu.c18
-rw-r--r--common/Makefile6
-rw-r--r--drivers/dfu/Kconfig12
-rw-r--r--drivers/dfu/Makefile2
5 files changed, 30 insertions, 10 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 885712f00f..d997f0c7a6 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -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"
diff --git a/cmd/dfu.c b/cmd/dfu.c
index 04291f6c08..76b89ca5ed 100644
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -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"
diff --git a/common/Makefile b/common/Makefile
index c7bde239c1..cdd0ab19d8 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -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
@@ -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
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index fa27efbb40..b077444059 100644
--- a/drivers/dfu/Kconfig
+++ b/drivers/dfu/Kconfig
@@ -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.
diff --git a/drivers/dfu/Makefile b/drivers/dfu/Makefile
index 61f2b71f91..7f35871ddc 100644
--- a/drivers/dfu/Makefile
+++ b/drivers/dfu/Makefile
@@ -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