dfu: Fix up the Kconfig mess
authorMarek Vasut <marek.vasut@gmail.com>
Fri, 16 Feb 2018 15:41:17 +0000 (16:41 +0100)
committerMarek Vasut <marex@denx.de>
Wed, 21 Feb 2018 19:28:15 +0000 (20:28 +0100)
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>
cmd/Kconfig
cmd/dfu.c
common/Makefile
drivers/dfu/Kconfig
drivers/dfu/Makefile

index 885712f00f35f4e00e6c84baffc399b295d2648f..d997f0c7a66e5e542066c5904ddca9791cb6e8e3 100644 (file)
@@ -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"
index 04291f6c0805fc5de2dea644bbceb19ba39b84a5..76b89ca5ed6372bfa9b9ecd7cb4feeaa71fbd12b 100644 (file)
--- 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"
index c7bde239c1e509fd86c6d700a30d9bb0b8251ccf..cdd0ab19d8577a5ff08c70a59a61726ba03f6ef7 100644 (file)
@@ -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
index fa27efbb405398435797e08b7e607b5ea4d9a065..b077444059a67d7801d5e2a3338df21b72628b21 100644 (file)
@@ -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.
index 61f2b71f918127f5b337a8afbb65c6f6e9c31a06..7f35871ddc610c7550c14d1359a8d5cf82823500 100644 (file)
@@ -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