summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 885712f00f3..d997f0c7a66 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 04291f6c080..76b89ca5ed6 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 c7bde239c1e..cdd0ab19d85 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 fa27efbb405..b077444059a 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 61f2b71f918..7f35871ddc6 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