Skip to content

Commit

Permalink
Revert "Revert "usb: rockchip: add rockusb command""
Browse files Browse the repository at this point in the history
This reverts commit d5c4b89.
  • Loading branch information
wzyy2 committed Dec 20, 2017
1 parent e211b3f commit 6baca5b
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
9 changes: 9 additions & 0 deletions cmd/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,15 @@ config CMD_RKNAND
help
Rockchip NAND FLASH device support

config CMD_ROCKUSB
bool "rockusb"
depends on USB_FUNCTION_ROCKUSB
help
Rockusb protocol is widely used by Rockchip SoC based devices. It can
read/write info, image to/from devices. This enable rockusb command
support to comunication with rockusb device. for more detail about
this command, please read doc/README.rockusb.

config CMD_SATA
bool "sata - Access SATA subsystem"
select SATA
Expand Down
1 change: 1 addition & 0 deletions cmd/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,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_NVME) += nvme.o
Expand Down
74 changes: 74 additions & 0 deletions cmd/rockusb.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* Copyright (C) 2017 Eddie Cai <[email protected]>
*
* 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"
);

0 comments on commit 6baca5b

Please sign in to comment.