static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
+ char *usb_controller;
+ char *interface;
+ char *devstring;
+ int argv_list = 0;
+ int ret, i = 0;
bool dfu_reset = false;
- if (argc < 4)
- return CMD_RET_USAGE;
-
- char *usb_controller = argv[1];
- char *interface = argv[2];
- char *devstring = argv[3];
+ switch (argc) {
+ case 2:
+ argv_list = 1;
+ case 1:
+ usb_controller = strdup(getenv("dfu_usb_con"));
+ interface = strdup(getenv("dfu_interface"));
+ devstring = strdup(getenv("dfu_device"));
- int ret, i = 0;
+ if (!usb_controller || !interface || !devstring) {
+ puts("DFU: default device environment is not set.\n");
+ return CMD_RET_USAGE;
+ }
+ break;
+ case 5:
+ argv_list = 4;
+ case 4:
+ usb_controller = argv[1];
+ interface = argv[2];
+ devstring = argv[3];
+ break;
+ default:
+ return CMD_RET_USAGE;
+ }
ret = dfu_init_env_entities(interface, devstring);
if (ret)
goto done;
- ret = CMD_RET_SUCCESS;
- if (argc > 4 && strcmp(argv[4], "list") == 0) {
+ if (argv_list && !strcmp(argv[argv_list], "list")) {
dfu_show_entities();
goto done;
}