mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
0f44d33536
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>
84 lines
1.9 KiB
C
84 lines
1.9 KiB
C
/*
|
|
* cmd_dfu.c -- dfu command
|
|
*
|
|
* Copyright (C) 2015
|
|
* Lukasz Majewski <l.majewski@majess.pl>
|
|
*
|
|
* Copyright (C) 2012 Samsung Electronics
|
|
* authors: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
|
|
* Lukasz Majewski <l.majewski@samsung.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <watchdog.h>
|
|
#include <dfu.h>
|
|
#include <console.h>
|
|
#include <g_dnl.h>
|
|
#include <usb.h>
|
|
#include <net.h>
|
|
|
|
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 = 0;
|
|
#ifdef CONFIG_TFTP_FUNCTION_DFU
|
|
unsigned long addr = 0;
|
|
if (!strcmp(argv[1], "tftp")) {
|
|
if (argc == 5)
|
|
addr = simple_strtoul(argv[4], NULL, 0);
|
|
|
|
return update_tftp(addr, interface, devstring);
|
|
}
|
|
#endif
|
|
#ifdef CONFIG_USB_FUNCTION_DFU
|
|
ret = dfu_init_env_entities(interface, devstring);
|
|
if (ret)
|
|
goto done;
|
|
|
|
ret = CMD_RET_SUCCESS;
|
|
if (argc > 4 && strcmp(argv[4], "list") == 0) {
|
|
dfu_show_entities();
|
|
goto done;
|
|
}
|
|
|
|
int controller_index = simple_strtoul(usb_controller, NULL, 0);
|
|
|
|
run_usb_dnl_gadget(controller_index, "usb_dnl_dfu");
|
|
|
|
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"
|
|
#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"
|
|
" [<addr>] - address where FIT image has been stored\n"
|
|
#endif
|
|
);
|