Blame view
cmd/fastboot.c
3.6 KB
83d290c56 SPDX: Convert all... |
1 |
// SPDX-License-Identifier: GPL-2.0+ |
3aab70afc usb/gadget: add t... |
2 3 4 5 6 7 |
/* * Copyright 2008 - 2009 Windriver, <www.windriver.com> * Author: Tom Rix <Tom.Rix@windriver.com> * * (C) Copyright 2014 Linaro, Ltd. * Rob Herring <robh@kernel.org> |
3aab70afc usb/gadget: add t... |
8 9 10 |
*/ #include <common.h> #include <command.h> |
24b852a7a Move console defi... |
11 |
#include <console.h> |
3aab70afc usb/gadget: add t... |
12 |
#include <g_dnl.h> |
f73a7df98 net: fastboot: Me... |
13 14 |
#include <fastboot.h> #include <net.h> |
8d2f0039f usb: board_usb_in... |
15 |
#include <usb.h> |
731785df0 cmd: fastboot: ha... |
16 |
#include <watchdog.h> |
1af3c7f42 common: Drop linu... |
17 |
#include <linux/stringify.h> |
3aab70afc usb/gadget: add t... |
18 |
|
f73a7df98 net: fastboot: Me... |
19 20 |
static int do_fastboot_udp(int argc, char *const argv[], uintptr_t buf_addr, size_t buf_size) |
3aab70afc usb/gadget: add t... |
21 |
{ |
f73a7df98 net: fastboot: Me... |
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#if CONFIG_IS_ENABLED(UDP_FUNCTION_FASTBOOT) int err = net_loop(FASTBOOT); if (err < 0) { printf("fastboot udp error: %d ", err); return CMD_RET_FAILURE; } return CMD_RET_SUCCESS; #else pr_err("Fastboot UDP not enabled "); return CMD_RET_FAILURE; #endif } static int do_fastboot_usb(int argc, char *const argv[], uintptr_t buf_addr, size_t buf_size) { #if CONFIG_IS_ENABLED(USB_FUNCTION_FASTBOOT) |
8d2f0039f usb: board_usb_in... |
43 44 |
int controller_index; char *usb_controller; |
aa51579f9 cmd: fastboot: Va... |
45 |
char *endp; |
3aab70afc usb/gadget: add t... |
46 |
int ret; |
9517d5997 MLK-22357-2 sdp/f... |
47 |
int index; |
3aab70afc usb/gadget: add t... |
48 |
|
8d2f0039f usb: board_usb_in... |
49 50 |
if (argc < 2) return CMD_RET_USAGE; |
9517d5997 MLK-22357-2 sdp/f... |
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
if (!strcmp(argv[1], "auto")) { index = board_usb_gadget_port_auto(); if (index >= 0) controller_index = index; else return CMD_RET_USAGE; } else { usb_controller = argv[1]; controller_index = simple_strtoul(usb_controller, &endp, 0); if (*endp != '\0') { pr_err("Error: Wrong USB controller index format "); return CMD_RET_FAILURE; } |
83e05a1be MLK-18591-3 andro... |
65 |
#ifdef CONFIG_FASTBOOT_USB_DEV |
9517d5997 MLK-22357-2 sdp/f... |
66 |
controller_index = CONFIG_FASTBOOT_USB_DEV; |
83e05a1be MLK-18591-3 andro... |
67 |
#endif |
9517d5997 MLK-22357-2 sdp/f... |
68 |
} |
8d2f0039f usb: board_usb_in... |
69 |
|
a06955ae1 usb: gadget: Do n... |
70 |
ret = usb_gadget_initialize(controller_index); |
8d2f0039f usb: board_usb_in... |
71 |
if (ret) { |
71002b508 cmd: add missing ... |
72 73 |
pr_err("USB init failed: %d ", ret); |
8d2f0039f usb: board_usb_in... |
74 75 |
return CMD_RET_FAILURE; } |
267abc626 fastboot: add sup... |
76 |
g_dnl_clear_detach(); |
3aab70afc usb/gadget: add t... |
77 78 79 |
ret = g_dnl_register("usb_dnl_fastboot"); if (ret) return ret; |
7c23bcb93 fastboot: Add USB... |
80 81 82 83 84 |
if (!g_dnl_board_usb_cable_connected()) { puts("\rUSB cable not detected. " \ "Command exit. "); |
8d2f0039f usb: board_usb_in... |
85 86 |
ret = CMD_RET_FAILURE; goto exit; |
7c23bcb93 fastboot: Add USB... |
87 |
} |
3aab70afc usb/gadget: add t... |
88 |
while (1) { |
267abc626 fastboot: add sup... |
89 90 |
if (g_dnl_detach()) break; |
3aab70afc usb/gadget: add t... |
91 92 |
if (ctrlc()) break; |
731785df0 cmd: fastboot: ha... |
93 |
WATCHDOG_RESET(); |
eca76b742 fastboot: Dynamic... |
94 |
usb_gadget_handle_interrupts(controller_index); |
3aab70afc usb/gadget: add t... |
95 |
} |
8d2f0039f usb: board_usb_in... |
96 97 98 |
ret = CMD_RET_SUCCESS; exit: |
3aab70afc usb/gadget: add t... |
99 |
g_dnl_unregister(); |
267abc626 fastboot: add sup... |
100 |
g_dnl_clear_detach(); |
a06955ae1 usb: gadget: Do n... |
101 |
usb_gadget_release(controller_index); |
8d2f0039f usb: board_usb_in... |
102 103 |
return ret; |
f73a7df98 net: fastboot: Me... |
104 105 106 107 108 109 |
#else pr_err("Fastboot USB not enabled "); return CMD_RET_FAILURE; #endif } |
091401131 command: Remove t... |
110 111 |
static int do_fastboot(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) |
f73a7df98 net: fastboot: Me... |
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
{ uintptr_t buf_addr = (uintptr_t)NULL; size_t buf_size = 0; if (argc < 2) return CMD_RET_USAGE; while (argc > 1 && **(argv + 1) == '-') { char *arg = *++argv; --argc; while (*++arg) { switch (*arg) { case 'l': if (--argc <= 0) return CMD_RET_USAGE; |
7e5f460ec global: Convert s... |
128 |
buf_addr = hextoul(*++argv, NULL); |
f73a7df98 net: fastboot: Me... |
129 130 131 132 133 |
goto NXTARG; case 's': if (--argc <= 0) return CMD_RET_USAGE; |
7e5f460ec global: Convert s... |
134 |
buf_size = hextoul(*++argv, NULL); |
f73a7df98 net: fastboot: Me... |
135 136 137 138 139 140 141 142 143 |
goto NXTARG; default: return CMD_RET_USAGE; } } NXTARG: ; } |
aa51579f9 cmd: fastboot: Va... |
144 145 146 147 148 149 |
/* Handle case when USB controller param is just '-' */ if (argc == 1) { pr_err("Error: Incorrect USB controller index "); return CMD_RET_USAGE; } |
f73a7df98 net: fastboot: Me... |
150 151 152 153 154 155 156 157 158 159 160 |
fastboot_init((void *)buf_addr, buf_size); if (!strcmp(argv[1], "udp")) return do_fastboot_udp(argc, argv, buf_addr, buf_size); if (!strcmp(argv[1], "usb")) { argv++; argc--; } return do_fastboot_usb(argc, argv, buf_addr, buf_size); |
3aab70afc usb/gadget: add t... |
161 |
} |
f73a7df98 net: fastboot: Me... |
162 163 164 165 166 167 168 169 170 171 172 |
#ifdef CONFIG_SYS_LONGHELP static char fastboot_help_text[] = "[-l addr] [-s size] usb <controller> | udp " "\taddr - address of buffer used during data transfers (" __stringify(CONFIG_FASTBOOT_BUF_ADDR) ") " "\tsize - size of buffer used during data transfers (" __stringify(CONFIG_FASTBOOT_BUF_SIZE) ")" ; #endif |
3aab70afc usb/gadget: add t... |
173 |
U_BOOT_CMD( |
f73a7df98 net: fastboot: Me... |
174 175 |
fastboot, CONFIG_SYS_MAXARGS, 1, do_fastboot, "run as a fastboot usb or udp device", fastboot_help_text |
3aab70afc usb/gadget: add t... |
176 |
); |