
Hi Eddie,
On 28 April 2017 at 18:41, Eddie Cai eddie.cai.linux@gmail.com wrote:
this patch add rockusb command. the usage is rockusb <USB_controller> <devtype> <dev[:part]> e.g. rockusb 0 mmc 0
Signed-off-by: Eddie Cai eddie.cai.linux@gmail.com
Changes in v3: -fix comment from Simon and Lukasz -fix checkpactch error
cmd/Kconfig | 11 +++++++++ cmd/Makefile | 1 + cmd/rockusb.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 cmd/rockusb.c
Reviewed-by: Simon Glass sjg@chromium.org
Nits below
diff --git a/cmd/Kconfig b/cmd/Kconfig index 13dc46a..89f3008 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -509,6 +509,17 @@ config CMD_DFU Enables the command "dfu" which is used to have U-Boot create a DFU class device via USB.
+config CMD_ROCKUSB
bool "rockusb"
select USB_FUNCTION_ROCKUSB
help
enables the rockusb command
Can you please expand a bit:
- what it is for - link to docs on how to get tool, how to run it - depends on ROCKCHIP or similar?
+config USB_FUNCTION_ROCKUSB
bool "Enable USB rockusb gadget"
help
This enables the USB part of the rockusb gadget.
Should this depend on the above, or vice versa?
Also wondering whether this one should go in the drivers/usb directory?
config CMD_USB_MASS_STORAGE bool "UMS usb mass storage" help diff --git a/cmd/Makefile b/cmd/Makefile index 97c862f..8c071f4 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -109,6 +109,7 @@ obj-$(CONFIG_CMD_READ) += read.o obj-$(CONFIG_CMD_REGINFO) += reginfo.o obj-$(CONFIG_CMD_REISER) += reiser.o obj-$(CONFIG_CMD_REMOTEPROC) += remoteproc.o +obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o obj-$(CONFIG_SANDBOX) += host.o obj-$(CONFIG_CMD_SATA) += sata.o obj-$(CONFIG_CMD_SF) += sf.o diff --git a/cmd/rockusb.c b/cmd/rockusb.c new file mode 100644 index 0000000..ae2baa6 --- /dev/null +++ b/cmd/rockusb.c @@ -0,0 +1,74 @@ +/*
- Copyright (C) 2017 Eddie Cai eddie.cai.linux@gmail.com
- SPDX-License-Identifier: GPL-2.0+
- */
+#include <common.h> +#include <command.h> +#include <console.h> +#include <g_dnl.h> +#include <usb.h> +#include <asm/arch/f_rockusb.h>
+static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +{
int controller_index, dev_index;
char *usb_controller;
char *devtype;
char *devnum;
int ret;
if (argc < 2)
return CMD_RET_USAGE;
usb_controller = argv[1];
controller_index = simple_strtoul(usb_controller, NULL, 0);
if (argc >= 4) {
devtype = argv[2];
devnum = argv[3];
} else {
return CMD_RET_USAGE;
}
dev_index = simple_strtoul(devnum, NULL, 0);
rockusb_dev_init(devtype, dev_index);
ret = board_usb_init(controller_index, USB_INIT_DEVICE);
if (ret) {
error("USB init failed: %d", ret);
return CMD_RET_FAILURE;
}
g_dnl_clear_detach();
ret = g_dnl_register("usb_dnl_rockusb");
if (ret)
return CMD_RET_FAILURE;
if (!g_dnl_board_usb_cable_connected()) {
puts("\rUSB cable not detected, Command exit.\n");
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(rockusb, 4, 1, do_rockusb,
"use the rockusb protocol",
"<USB_controller> <devtype> <dev[:part]> e.g. rockusb 0 mmc 0\n"
+);
1.9.1
Regards, Simon