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