From patchwork Fri Dec 15 00:17:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eddie Cai X-Patchwork-Id: 848800 X-Patchwork-Delegate: philipp.tomsich@theobroma-systems.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="I+aqcpmy"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3yyWL15sjqz9t2f for ; Fri, 15 Dec 2017 11:20:41 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 6FF1DC21F0A; Fri, 15 Dec 2017 00:18:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 4E070C21EC9; Fri, 15 Dec 2017 00:18:28 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A4FD7C21E28; Fri, 15 Dec 2017 00:17:49 +0000 (UTC) Received: from mail-pg0-f65.google.com (mail-pg0-f65.google.com [74.125.83.65]) by lists.denx.de (Postfix) with ESMTPS id 85A05C21EE9 for ; Fri, 15 Dec 2017 00:17:45 +0000 (UTC) Received: by mail-pg0-f65.google.com with SMTP id w7so4571815pgv.6 for ; Thu, 14 Dec 2017 16:17:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wUCWJ7yudAJJWfyp0mOShfIx7TVw6cblJ9+VmIAbdno=; b=I+aqcpmyDQJOHEUVPX0xsHROKifMBmF26tMrv4I1jvLGON9HbKkLZ3ynrxLXmHRCq8 j5LnGWuVYyonSXTTtVqZtaOXZBj/lyeQocsWUClBd+2hM5JAdX/j8YIjWMryy48gE1Yw 05WaV/TIUWVSuGScq4ANZ03THPzdBnV7l0BLbYJ9tvUYefa1Y94BO1WMC1+8KzaYO2uL qQ1jSywXMnYunMovsYJzwa2yCIqIZ89H+PLP4hWnlFIPYpUYNDyHds3MK8tknoHxjFS+ 2F2PltzpVG75jVlvWwLzy01ow5xQUat657vA1+bQTAiKZKb46EerfGkK4PBMrSz+FQO5 rYxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=wUCWJ7yudAJJWfyp0mOShfIx7TVw6cblJ9+VmIAbdno=; b=j1UdyjC/GDuwQMGPgcyTMVltLr0Ob/wn3I0Q29b27oposK1lni4ft2i7JXnqsr1Qyv vIw9+EjA0I2Atvekyn5vw+PYeShnFW1VI6M1fTiAGbPM1ltiEB/AtZQbiNqrDwThBXY/ d2IPoKwFZDjmAcyvPYJc+je4ZWI4VctdC4YMAYCO/SojDt5oZUXbGV1kwsKdE54DhtXH 9/0AXSrUKVLN/LYOkNU8915FJ0maGqMBqY5WSFXAH1058xw7bTJgNmwwVgqrvUcrl03S WGq309S8TEwxTeenU79aW4NoD0eiLuMjBdM6g7jTB6fYlNd5LvGv5tdv6ysfkm9FeKAU W5GA== X-Gm-Message-State: AKGB3mKZj04mFtAYblUDZQV2GbT/hrjrvNY0RoGWbl9qz750/ybMSiax Z6LtkwE+sTKyUltYn/LfjN0= X-Google-Smtp-Source: ACJfBos9mB1FCzB1cbRnUT8FQya0LNze6JpJH648QGqE7JuONZzw6ygoAizEZ0v2SqIPnh6p3RKR5Q== X-Received: by 10.99.134.73 with SMTP id x70mr10297634pgd.130.1513297064206; Thu, 14 Dec 2017 16:17:44 -0800 (PST) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id p10sm9918153pfl.32.2017.12.14.16.17.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 14 Dec 2017 16:17:43 -0800 (PST) From: Eddie Cai To: lukma@denx.de, marek.vasut@gmail.com Date: Fri, 15 Dec 2017 08:17:11 +0800 Message-Id: <1513297033-26450-3-git-send-email-eddie.cai.linux@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1513297033-26450-1-git-send-email-eddie.cai.linux@gmail.com> References: <1513297033-26450-1-git-send-email-eddie.cai.linux@gmail.com> Cc: marex@denx.de, u-boot@lists.denx.de Subject: [U-Boot] [PATCH V12 2/4] usb: rockchip: add rockusb command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" this patch add rockusb command. the usage is rockusb e.g. rockusb 0 mmc 0 Signed-off-by: Eddie Cai Reviewed-by: Simon Glass --- Changes in v12: -rebase to the latest main line U-Boot Changes in v11: -fix check patch error -add maintainer Changes in v10: -fix build error Changes in v9: -fix compile error Changes in v8: -none Changes in v7: -none Changes in v6: -move some data to f_rockusb structure Changes in v5: -fix build error when build non-rockchip board -fix checkpatch error Changes in v4: -use enum instead of macro define -move some structure define and macro to f_rockusb.h -add some function comment as Simon required -address other comment from Simon -fix build error as Lukasz point out --- MAINTAINERS | 1 + cmd/Kconfig | 8 +++++++ cmd/Makefile | 1 + cmd/rockusb.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 cmd/rockusb.c diff --git a/MAINTAINERS b/MAINTAINERS index baf2beb..b231610 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -492,6 +492,7 @@ ROCKUSB M: Eddie Cai S: Maintained F: drivers/usb/gadget/f_rockusb.c +F: cmd/rockusb.c VIDEO M: Anatolij Gustschin diff --git a/cmd/Kconfig b/cmd/Kconfig index c033223..83dc778 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -914,6 +914,14 @@ config CMD_USB_SDP help Enables the command "sdp" which is used to have U-Boot emulating the Serial Download Protocol (SDP) via USB. +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 communication with rockusb device. for more detail about + this command, please read doc/README.rockusb. config CMD_USB_MASS_STORAGE bool "UMS usb mass storage" diff --git a/cmd/Makefile b/cmd/Makefile index 00e3869..0fd2849 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -105,6 +105,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 diff --git a/cmd/rockusb.c b/cmd/rockusb.c new file mode 100644 index 0000000..af81cdc --- /dev/null +++ b/cmd/rockusb.c @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2017 Eddie Cai + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include + +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) { + printf("USB init failed: %d\n", 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", + " e.g. rockusb 0 mmc 0\n" +);