Blame view
cmd/fastboot.c
1.34 KB
3aab70afc
|
1 2 3 4 5 6 7 8 9 10 11 |
/* * 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> |
24b852a7a
|
12 |
#include <console.h> |
3aab70afc
|
13 |
#include <g_dnl.h> |
8d2f0039f
|
14 |
#include <usb.h> |
3aab70afc
|
15 16 17 |
static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { |
8d2f0039f
|
18 19 |
int controller_index; char *usb_controller; |
3aab70afc
|
20 |
int ret; |
8d2f0039f
|
21 22 23 24 25 26 27 28 29 30 31 |
if (argc < 2) return CMD_RET_USAGE; usb_controller = argv[1]; controller_index = simple_strtoul(usb_controller, NULL, 0); ret = board_usb_init(controller_index, USB_INIT_DEVICE); if (ret) { error("USB init failed: %d", ret); return CMD_RET_FAILURE; } |
267abc626
|
32 |
g_dnl_clear_detach(); |
3aab70afc
|
33 34 35 |
ret = g_dnl_register("usb_dnl_fastboot"); if (ret) return ret; |
7c23bcb93
|
36 37 38 39 40 |
if (!g_dnl_board_usb_cable_connected()) { puts("\rUSB cable not detected. " \ "Command exit. "); |
8d2f0039f
|
41 42 |
ret = CMD_RET_FAILURE; goto exit; |
7c23bcb93
|
43 |
} |
3aab70afc
|
44 |
while (1) { |
267abc626
|
45 46 |
if (g_dnl_detach()) break; |
3aab70afc
|
47 48 |
if (ctrlc()) break; |
eca76b742
|
49 |
usb_gadget_handle_interrupts(controller_index); |
3aab70afc
|
50 |
} |
8d2f0039f
|
51 52 53 |
ret = CMD_RET_SUCCESS; exit: |
3aab70afc
|
54 |
g_dnl_unregister(); |
267abc626
|
55 |
g_dnl_clear_detach(); |
8d2f0039f
|
56 57 58 |
board_usb_cleanup(controller_index, USB_INIT_DEVICE); return ret; |
3aab70afc
|
59 60 61 |
} U_BOOT_CMD( |
8d2f0039f
|
62 |
fastboot, 2, 1, do_fastboot, |
593cbd93f
|
63 |
"use USB Fastboot protocol", |
8d2f0039f
|
64 65 |
"<USB_controller> " |
593cbd93f
|
66 |
" - run as a fastboot usb device" |
3aab70afc
|
67 |
); |