2 * Copyright (C) 2011 Samsung Electronics
3 * Lukasz Majewski <l.majewski@samsung.com>
5 * SPDX-License-Identifier: GPL-2.0+
12 #include <usb_mass_storage.h>
14 int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
15 int argc, char * const argv[])
20 const char *usb_controller = argv[1];
21 const char *mmc_devstring = argv[2];
23 unsigned int dev_num = (unsigned int)(simple_strtoul(mmc_devstring,
28 unsigned int controller_index = (unsigned int)(simple_strtoul(
29 usb_controller, NULL, 0));
30 if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
31 error("Couldn't init USB controller.");
32 return CMD_RET_FAILURE;
35 struct ums *ums = ums_init(dev_num);
37 printf("MMC: %u no such device\n", dev_num);
38 return CMD_RET_FAILURE;
41 int rc = fsg_init(ums);
43 error("fsg_init failed");
44 return CMD_RET_FAILURE;
47 g_dnl_register("ums");
50 /* Handle control-c and timeouts */
52 error("The remote end did not respond in time.");
56 usb_gadget_handle_interrupts();
57 /* Check if USB cable has been detached */
58 if (fsg_main_thread(NULL) == EIO)
63 return CMD_RET_SUCCESS;
66 U_BOOT_CMD(ums, CONFIG_SYS_MAXARGS, 1, do_usb_mass_storage,
67 "Use the UMS [User Mass Storage]",
68 "ums <USB_controller> <mmc_dev> e.g. ums 0 0"