blob: 192baafc3ca5462f13b1d792e0510d6a1a16d7f3 [file] [log] [blame]
/*
* Copyright 2008 - 2009 Windriver, <www.windriver.com>
* Author: Tom Rix <Tom.Rix@windriver.com>
*
* (C) Copyright 2014 Linaro, Ltd.
* Rob Herring <robh@kernel.org>
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <command.h>
#include <g_dnl.h>
static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
{
int ret;
g_dnl_clear_detach();
ret = g_dnl_register("usb_dnl_fastboot");
if (ret)
return ret;
while (1) {
if (g_dnl_detach())
break;
if (ctrlc())
break;
usb_gadget_handle_interrupts();
}
g_dnl_unregister();
g_dnl_clear_detach();
return CMD_RET_SUCCESS;
}
U_BOOT_CMD(
fastboot, 1, 0, do_fastboot,
"use USB Fastboot protocol",
"\n"
" - run as a fastboot usb device"
);
__attribute__((weak)) bool force_fastboot_mode(void);
/*
* Checks whether forced switching into fastboot mode is requested
* Returns 0 if requested, 1 - otherwise.
*/
static int do_force_fastboot_mode(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
{
if (force_fastboot_mode) {
if (force_fastboot_mode()) {
printf("Force Fastboot mode: on\n");
return 0;
}
printf("Force Fastboot mode: off\n");
} else {
printf("Force Fastboot mode is not supported.\n");
}
return 1;
}
U_BOOT_CMD(
force_fastboot_mode, 1, 0, do_force_fastboot_mode,
"check if USB Fastboot mode should be forced", ""
);