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>
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 885712f..d997f0c 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -588,7 +588,7 @@
 
 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 04291f6..76b89ca 100644
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -25,12 +25,14 @@
 	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 @@
 		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 @@
 
 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"