From patchwork Wed Mar 15 07:56:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eddie Cai X-Patchwork-Id: 739045 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3vjkVd20S2z9s2Q for ; Wed, 15 Mar 2017 18:58:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pAHAA7eW"; dkim-atps=neutral Received: by lists.denx.de (Postfix, from userid 105) id EC9B3C21C5D; Wed, 15 Mar 2017 07:57:52 +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_H2, 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 C6388C21C6E; Wed, 15 Mar 2017 07:57:13 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id F164BC21C69; Wed, 15 Mar 2017 07:57:05 +0000 (UTC) Received: from mail-pf0-f195.google.com (mail-pf0-f195.google.com [209.85.192.195]) by lists.denx.de (Postfix) with ESMTPS id 472B1C21C77 for ; Wed, 15 Mar 2017 07:56:55 +0000 (UTC) Received: by mail-pf0-f195.google.com with SMTP id v190so1362530pfb.0 for ; Wed, 15 Mar 2017 00:56:55 -0700 (PDT) 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=u1zNEjHUhzjvU9toQd/YK2pKVjMmsjEm9sYrFuzQCz4=; b=pAHAA7eWWnpH9w1QxQZbBnFsoPcADkhtX1IR9BDefz3b2/CGjU4VcVkAisAiiysFHj oQ1He41Hh2Y/FcoBGWbBQcPydkreZsZ9Hx99jCvMrq3rFBQX9eDhn7CMT8a4XZdCMibd lP+tMOryPdRY3mhKcdT6tK6yVgwP69/yiFZ0UEpDEFeQ0AEREOXcAM1woQxhx5Dmoh62 +TMpiFFqx5yNlmwI5btVFhVYjAPKSnzI0UcApo1TqLuXjWkhrlVX3eVzWhCfxYSWf4cc abb73wyTvREPdSK/l45eXpLGlxcnnL8oV2Nk3GoFEwKyYnYHOkhJurzuUOMk9jilgNbd 2IRQ== 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=u1zNEjHUhzjvU9toQd/YK2pKVjMmsjEm9sYrFuzQCz4=; b=opJJj45lsupx5EsFOcvKyn884iCrncYYs/sc32YZZQhQ5RlGUmIOFbCd01Cwmt6O4b ECbPcotMmanCeDWuD5mfRYA6LKg+dEEssXyrs85GM2geurvhQ2UHGsqQhoHnuk2AXhi6 WIlAloGTZcglQy5fjhGhloU6fIS4KukKDu7cutuZ8gRLRY60Wj1wdKFDsSrZL/GLy2+o WlGqMT64T52DGgrmXqY/UTw0mCk1wiZwaCRZv/e0k/ONx73LfwNiFOEVM6YcbJbPdtyo 6q8LEOG6FIwxquLTHj7I9ylHJX8szce9ckwh91H++SR2Bmg3aAteCj5iDie14YIPYq/k ZIfA== X-Gm-Message-State: AFeK/H3kgJDHkXVOFjC2mQ5L/W+kMiVBLdKBsJpwdypAHoLQg1twRePoTKd0OzuA+Y3Fdg== X-Received: by 10.98.5.2 with SMTP id 2mr2130451pff.77.1489564613923; Wed, 15 Mar 2017 00:56:53 -0700 (PDT) Received: from localhost.localdomain ([103.29.142.67]) by smtp.gmail.com with ESMTPSA id 10sm2323770pfs.113.2017.03.15.00.56.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 15 Mar 2017 00:56:53 -0700 (PDT) From: Eddie Cai To: lukma@denx.de, marex@denx.de, sjg@chromium.org, kever.yang@rock-chips.com, william.wu@rock-chips.com Date: Wed, 15 Mar 2017 15:56:04 +0800 Message-Id: <1489564565-20856-3-git-send-email-eddie.cai.linux@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1489564565-20856-1-git-send-email-eddie.cai.linux@gmail.com> References: <1489564565-20856-1-git-send-email-eddie.cai.linux@gmail.com> Cc: u-boot@lists.denx.de Subject: [U-Boot] [U-Boot 2/3] cmd: 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 --- cmd/Kconfig | 12 +++++++++ cmd/Makefile | 1 + cmd/rockusb.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/rockusb.h | 13 +++++++++ 4 files changed, 105 insertions(+) create mode 100644 cmd/rockusb.c create mode 100644 include/rockusb.h diff --git a/cmd/Kconfig b/cmd/Kconfig index ef53156..dac2cc0 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -475,6 +475,18 @@ 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 command "rockusb" which is used to have U-Boot create a + Rockusb class device via USB. + +config USB_FUNCTION_ROCKUSB + bool "Enable USB rockusb gadget" + help + This enables the USB part of the rockusb gadget. + config CMD_USB_MASS_STORAGE bool "UMS usb mass storage" help diff --git a/cmd/Makefile b/cmd/Makefile index f13bb8c..f5f1663 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -141,6 +141,7 @@ endif obj-$(CONFIG_CMD_USB) += usb.o disk.o obj-$(CONFIG_CMD_FASTBOOT) += fastboot.o +obj-$(CONFIG_CMD_ROCKUSB) += rockusb.o obj-$(CONFIG_CMD_FS_UUID) += fs_uuid.o obj-$(CONFIG_CMD_USB_MASS_STORAGE) += usb_mass_storage.o diff --git a/cmd/rockusb.c b/cmd/rockusb.c new file mode 100644 index 0000000..f5bd86e --- /dev/null +++ b/cmd/rockusb.c @@ -0,0 +1,79 @@ +/* + * 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 { + devtype = "mmc"; + devnum = argv[2]; + } + 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 ret; + printf("do_rockusb1\n"); + if (!g_dnl_board_usb_cable_connected()) { + puts("\rUSB cable not detected.\n" \ + "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); + } + printf("do_rockusb2\n"); + 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", + "rockusb [] e.g. rockusb 0 mmc 0\n" + " devtype defaults to mmc" +); diff --git a/include/rockusb.h b/include/rockusb.h new file mode 100644 index 0000000..cdea63d --- /dev/null +++ b/include/rockusb.h @@ -0,0 +1,13 @@ +/* + * (C) Copyright 2017 + * + * Eddie Cai + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#ifndef _ROCKUSB_H_ +#define _ROCKUSB_H_ + +void rockusb_dev_init(char *dev_type, int dev_index); + +#endif /* _ROCKUSB_H_ */