From patchwork Thu Jul 12 11:05:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942918 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="q0y2UY8V"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCsq05Ntz9rxx for ; Thu, 12 Jul 2018 21:10:54 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 9A70EC21FBB; Thu, 12 Jul 2018 11:10:35 +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=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 DC845C21EF1; Thu, 12 Jul 2018 11:06:49 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8A0D1C21F90; Thu, 12 Jul 2018 11:06:44 +0000 (UTC) Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by lists.denx.de (Postfix) with ESMTPS id 68864C21F59 for ; Thu, 12 Jul 2018 11:06:19 +0000 (UTC) Received: by mail-wr1-f65.google.com with SMTP id g6-v6so12352784wrp.0 for ; Thu, 12 Jul 2018 04:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=F/tuce5rWmZsQS/SMBcWIxcy60qg08dVlFMMVr2A4X8=; b=q0y2UY8VBKvctwp+t7IreqUMW9dcQaEEb9GFwNvxM3ueWXmSikzDt31eKrBCU1E//O TJJivocORO1QUNCasoychmc4EDuONgiladW9T+StcFxF1qndJq9sIdSsvB9X5/WAAeV/ s/p/fbVBe9OP0RiIUXfr5niuPz2ZraEJ1Fd/4= 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=F/tuce5rWmZsQS/SMBcWIxcy60qg08dVlFMMVr2A4X8=; b=mTxiOBZr/iTwOpYSUzeSGmsZ8X/m0JHDpglyh4W4I7z9BYDkqSuQTFLELTFnub2vVH UwleEx1IAoWSrnNLhJ0m9JT1/LFoljmZE83VYBAwi1CNQKXItRJjLY3N5YC++duh5QEU cLEiPriHYRH3bYIKTtghs90WMF5/LLGnZ/wkdI1jql8B5x9LiliO8qpdZMk58wo+XycS cY5bKDLSy79LttdzK/xVTWzlEgHtWYt1Du/TpvXw+LMAC856elI+bkVpMPK1WZ/0x3uS bcjFM4DcGl+S5nVAZLVZcr8D7K2DpHQQYymOUc9HnxehdWnn80y86mGxO7n6QF4s9Q/A 5zaw== X-Gm-Message-State: AOUpUlHnFqHjP8mW8yTwuYttGoCpiCAzmJYDki1M1iTyJ/PFaicv2A4V Ad24KtUL19ggyRl2SYtQLLZr3gyg X-Google-Smtp-Source: AAOMgpeUFE3dtJ0N3FFDh9WGBdZ/q8A2gZzxmu/GbVWHHk1vOr8dSJiff/ygVl9Eez6xStu7ELQhWQ== X-Received: by 2002:adf:e287:: with SMTP id v7-v6mr1479712wri.139.1531393578947; Thu, 12 Jul 2018 04:06:18 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.06.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:06:18 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:41 +0200 Message-Id: <1531393559-28958-2-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 1/9] usb: rockchip: fix command failed on host side due to missing data 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" Two consecutive rockusb_tx_write without waiting for request complete do results in transfer reset of first request and thus no or incomplete data transfer. This because rockusb_tx_write do use just one USB request to keep serialization. So calls like: rockusb_tx_write_str(emmc_id); rockusb_tx_write_csw(cbw->tag, cbw->data_transfer_length, CSW_GOOD); was succeeding only when DEBUG was defined because the time spent printing debug info was enough for transfer to complete. This patch fixes the issue adding a simple request complete handler called rockusb_tx_write_csw to be set as complete handler of in_req when sending back simple payload + CSW replies to commands. This new handler will always send CSW_GOOD replies because in case of error the command callback itself must send back an error CSW as unique reply to command. This patch fixes execution of: $ rkdeveloptool rfi when DEBUG is not defined. Signed-off-by: Alberto Panizzo --- drivers/usb/gadget/f_rockusb.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index b8833d0..58e483c 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -388,6 +388,20 @@ static int rockusb_tx_write_csw(u32 tag, int residue, u8 status, int size) return rockusb_tx_write((char *)csw, size); } +static void tx_handler_send_csw(struct usb_ep *ep, struct usb_request *req) +{ + struct f_rockusb *f_rkusb = get_rkusb(); + int status = req->status; + + if (status) + debug("status: %d ep '%s' trans: %d\n", + status, ep->name, req->actual); + + /* Return back to default in_req complete function after sending CSW */ + req->complete = rockusb_complete; + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_GOOD, USB_BULK_CS_WRAP_LEN); +} + static unsigned int rx_bytes_expected(struct usb_ep *ep) { struct f_rockusb *f_rkusb = get_rkusb(); @@ -496,13 +510,17 @@ static void cb_read_storage_id(struct usb_ep *ep, struct usb_request *req) { ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, sizeof(struct fsg_bulk_cb_wrap)); + struct f_rockusb *f_rkusb = get_rkusb(); char emmc_id[] = "EMMC "; printf("read storage id\n"); memcpy((char *)cbw, req->buf, USB_BULK_CB_WRAP_LEN); + + /* Prepare for sending subsequent CSW_GOOD */ + f_rkusb->tag = cbw->tag; + f_rkusb->in_req->complete = tx_handler_send_csw; + rockusb_tx_write_str(emmc_id); - rockusb_tx_write_csw(cbw->tag, cbw->data_transfer_length, CSW_GOOD, - USB_BULK_CS_WRAP_LEN); } static void cb_write_lba(struct usb_ep *ep, struct usb_request *req) From patchwork Thu Jul 12 11:05:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942917 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="QMsPPEY8"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCs44vKRz9rxx for ; Thu, 12 Jul 2018 21:10:16 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2492BC21FD6; Thu, 12 Jul 2018 11:10:13 +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=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 4968EC21F9D; Thu, 12 Jul 2018 11:06:48 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6088AC21FA4; Thu, 12 Jul 2018 11:06:45 +0000 (UTC) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by lists.denx.de (Postfix) with ESMTPS id A2299C21FA0 for ; Thu, 12 Jul 2018 11:06:29 +0000 (UTC) Received: by mail-wm0-f67.google.com with SMTP id 69-v6so5558148wmf.3 for ; Thu, 12 Jul 2018 04:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=c82NKCOoeL3odpIvNb+TyzDkLfcUhAB60tay1TMibk0=; b=QMsPPEY8COk1riRW2Jx+WGWp2H5sVCHe2rAMKpDeCX4O7ib0naT/LzmYE/JkFbfCd9 Z2J8zasd6sYXuG0w3XFFiayLYxWTvfwN4Xdmy+ObrxMGg2oeu1u8AqlYFWP7HgTwiXOl DNtZTU9M1UWxM6HiinVvedz3P3TPcWQKckyDA= 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=c82NKCOoeL3odpIvNb+TyzDkLfcUhAB60tay1TMibk0=; b=rYDpYBjMrPez0u0bcecvxZIieLSkuDwpiKCOtyzwIOTCHDNyyMDZAsatXah/o68c6v 7XU69fmt7Pyztlgpou3pX8dwbFsI1KM3zP0xEYKxzqhVQBtHSYTgQY+523VTr9frLqLg OHMONbQPP5GWGRT5koaMN/BetklkoQJkgqhlBZgHRNzpFQyz90+eNgrP7iesCYnT7/Kw +eNzv6FCZkDcJclf6+wp+Uv6IINZKkLJja9tfc7fNwRFbJJ82vsnr9f99+ZOYfupLB/b Vyk5C0cET8MxAdh2W/vIt8hQHVxri68J18WNFAbHcNzfRVUGv+YvZwDKHQQ7ag+EqdRE q5gw== X-Gm-Message-State: AOUpUlEYCg7bRERIXQ8Xq7ATR8LkxU7ogDWleXmXVkys195QgI3htTDc Uw0sqzlTHS39LVJIyi9BaUylJ58K X-Google-Smtp-Source: AAOMgpcHVVoZARi2NAmbvjhshf/oj/3xO/KeLvrPck7Ms8hBvLzELfDV3/0IOOkR7dKklj76TtlJmw== X-Received: by 2002:a1c:7908:: with SMTP id l8-v6mr1039327wme.80.1531393589193; Thu, 12 Jul 2018 04:06:29 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.06.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:06:28 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:42 +0200 Message-Id: <1531393559-28958-3-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 2/9] usb: rockchip: implement skeleton for K_FW_GET_CHIP_VER 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" Chip Version is a string saved in BOOTROM address space Little Endian. Ex for rk3288: 0x33323041 0x32303134 0x30383133 0x56323030 which brings: 320A20140813V200 Note that memory version do invert MSB/LSB so printing the char buffer would show: A02341023180002V Signed-off-by: Alberto Panizzo Reviewed-by: Philipp Tomsich --- doc/README.rockusb | 9 ++++++--- drivers/usb/gadget/f_rockusb.c | 44 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/doc/README.rockusb b/doc/README.rockusb index 5405dc4..3a93edc 100644 --- a/doc/README.rockusb +++ b/doc/README.rockusb @@ -42,9 +42,12 @@ see doc/README.rockchip for more detail about how to get U-Boot binary. sudo rkdeveloptool wl 64 -There are plenty of Rockusb command. but wl(write lba) and -rd(reboot) command. These two command can let people flash -image to device. +Current set of rkdeveloptool commands supported: +- rci: Read Chip Info +- rfi: Read Flash Id +- rd : Reset Device +- td : Test Device Ready +- wl : Write blocks using LBA To do ----- diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index 58e483c..0314ff0 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -523,6 +523,48 @@ static void cb_read_storage_id(struct usb_ep *ep, struct usb_request *req) rockusb_tx_write_str(emmc_id); } +int __weak rk_get_bootrom_chip_version(unsigned int *chip_info, int size) +{ + return 0; +} + +static void cb_get_chip_version(struct usb_ep *ep, struct usb_request *req) +{ + ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, + sizeof(struct fsg_bulk_cb_wrap)); + struct f_rockusb *f_rkusb = get_rkusb(); + unsigned int chip_info[4], i; + + memset(chip_info, 0, sizeof(chip_info)); + rk_get_bootrom_chip_version(chip_info, 4); + + /* + * Chip Version is a string saved in BOOTROM address space Little Endian + * + * Ex for rk3288: 0x33323041 0x32303134 0x30383133 0x56323030 + * which brings: 320A20140813V200 + * + * Note that memory version do invert MSB/LSB so printing the char + * buffer will show: A02341023180002V + */ + printf("read chip version: "); + for (i = 0; i < 4; i++) { + printf("%c%c%c%c", + (chip_info[i] >> 24) & 0xFF, + (chip_info[i] >> 16) & 0xFF, + (chip_info[i] >> 8) & 0xFF, + (chip_info[i] >> 0) & 0xFF); + } + printf("\n"); + memcpy((char *)cbw, req->buf, USB_BULK_CB_WRAP_LEN); + + /* Prepare for sending subsequent CSW_GOOD */ + f_rkusb->tag = cbw->tag; + f_rkusb->in_req->complete = tx_handler_send_csw; + + rockusb_tx_write((char *)chip_info, sizeof(chip_info)); +} + static void cb_write_lba(struct usb_ep *ep, struct usb_request *req) { ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, @@ -661,7 +703,7 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = { }, { .cmd = K_FW_GET_CHIP_VER, - .cb = cb_not_support, + .cb = cb_get_chip_version, }, { .cmd = K_FW_LOW_FORMAT, From patchwork Thu Jul 12 11:05:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942919 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="lHY7+AjQ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCvP2895z9s1R for ; Thu, 12 Jul 2018 21:12:17 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D3685C21E3E; Thu, 12 Jul 2018 11:10: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=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 83083C21FA0; Thu, 12 Jul 2018 11:06:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 84285C21F90; Thu, 12 Jul 2018 11:06:55 +0000 (UTC) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by lists.denx.de (Postfix) with ESMTPS id 1F737C21C27 for ; Thu, 12 Jul 2018 11:06:42 +0000 (UTC) Received: by mail-wm0-f67.google.com with SMTP id v25-v6so5284699wmc.0 for ; Thu, 12 Jul 2018 04:06:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ltoGfGJC/QbFYcMWbKwuV45Eg5YHSyJv5FjlJ2xf2vg=; b=lHY7+AjQqIIQ+oYSXeQiYQi6iu1wsHLyj816lHFftMuugze7IArG5v/Vrt0GTSI8c6 wFJ9AZbLrniBFe8Yioj0mBLjPXYKXp2uigSNT7Nk/jp67MBaMHQMT5vasE03Wb0fxhuX hmCDaHZlpgfrZ86b+Y60bR37gCHjqofjw9U4c= 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=ltoGfGJC/QbFYcMWbKwuV45Eg5YHSyJv5FjlJ2xf2vg=; b=C1k3UQdKMgBYYyW5ocw/uvqSVbD3EiDQxvK/EnUJxDZW5AgmVXQcou55h5qTYADUZH CM3q7+vkyEhPLcIE8U8XiA13RYfb3lW8656lPQHsxs4jeOEhQxpYMCzxURAQHdsTjgpw EY9jbkABqLQKZSgLGiVKP79BpGNRhtbJ+6J029dQM06EYgqQwEL85JrmJmFxWVO6pVXD jKpeJVZV/+9g/IEMeUtDeRiMEGBsIFuKj9u54I+k6irYhtrUEhduehtHQ9BeEIHAsu3c so8zwOOQrxXyWI/7e1xTJ4h9Iq+JI8sUBPswmK33CrUpAM4GAUmJCM+UJRTehkxpuwIY dAww== X-Gm-Message-State: AOUpUlHKDuGAawhvC4XXZeI7rY8ZJIjB9qYUbLP/1Br9QIA2CUCpD4tb 1GAv1Ks5Lc9Mw8DfmxslhU8GpRJ3 X-Google-Smtp-Source: AAOMgpfglNJN+0SujZrSifNKOZdUlzNrk+DhkOpCiHet3d2mkA1LNiDylEbpHxWKVI2dX1iMYBK5lw== X-Received: by 2002:a1c:5e48:: with SMTP id s69-v6mr1023330wmb.19.1531393601644; Thu, 12 Jul 2018 04:06:41 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.06.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:06:40 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:43 +0200 Message-Id: <1531393559-28958-4-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Subject: [U-Boot] [PATCH v3 3/9] rockchip: rk3288: implement reading chip version from bootrom code 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 allows rockusb code to reply correctly to K_FW_GET_CHIP_VER command. On RK3288 chip version is at 0xffff4ff0 and on tested hardware it corresponds at the string "320A20140813V200" Signed-off-by: Alberto Panizzo Reviewed-by: Simon Glass Reviewed-by: Philipp Tomsich --- arch/arm/mach-rockchip/rk3288/Makefile | 1 + arch/arm/mach-rockchip/rk3288/rockusb_rk3288.c | 30 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 arch/arm/mach-rockchip/rk3288/rockusb_rk3288.c diff --git a/arch/arm/mach-rockchip/rk3288/Makefile b/arch/arm/mach-rockchip/rk3288/Makefile index a0033a0..da0eb4a 100644 --- a/arch/arm/mach-rockchip/rk3288/Makefile +++ b/arch/arm/mach-rockchip/rk3288/Makefile @@ -7,3 +7,4 @@ obj-y += clk_rk3288.o obj-y += rk3288.o obj-y += syscon_rk3288.o +obj-$(CONFIG_USB_FUNCTION_ROCKUSB) += rockusb_rk3288.o diff --git a/arch/arm/mach-rockchip/rk3288/rockusb_rk3288.c b/arch/arm/mach-rockchip/rk3288/rockusb_rk3288.c new file mode 100644 index 0000000..62057c1 --- /dev/null +++ b/arch/arm/mach-rockchip/rk3288/rockusb_rk3288.c @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Amarula Solutions + * Written by Alberto Panizzo + */ + +#include +#include +#include +#include +#include +#include + +#define ROM_PHYS 0xffff0000 + +#define ROM_CHIP_VER_ADDR_ADDR (ROM_PHYS + 0x4FF0) +#define ROM_CHIP_VER_ADDR_SIZE 16 + +int rk_get_bootrom_chip_version(unsigned int *chip_info, int size) +{ + if (!chip_info) + return -1; + if (size < ROM_CHIP_VER_ADDR_SIZE / sizeof(int)) + return -1; + + memcpy((char *)chip_info, (char *)ROM_CHIP_VER_ADDR_ADDR, + ROM_CHIP_VER_ADDR_SIZE); + + return 0; +} From patchwork Thu Jul 12 11:05:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942920 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="cxtJvdyx"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCw35QQBz9rxx for ; Thu, 12 Jul 2018 21:12:51 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 6C2DBC21EF1; Thu, 12 Jul 2018 11:11:09 +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=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 417DAC21F6D; Thu, 12 Jul 2018 11:07:08 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C5B7CC21FBE; Thu, 12 Jul 2018 11:07:04 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id C7C93C21F99 for ; Thu, 12 Jul 2018 11:06:52 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id m1-v6so8546417wrg.5 for ; Thu, 12 Jul 2018 04:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hO9FaXucVlbZ9OK91BlP5qnmC4RjSFRm6qV6YI3B5iA=; b=cxtJvdyxB3UciKtNaPfPiHD6U+jpvqRf5prj4rJWszYW1PXMv8xGlDjpNGmiIORuiY vD/DRWx/Cy5DOnxfWRTn/SzSd7ZeKEiKgd7LtgIE1A1tPjtJilAGiFTlfBR7p8GyJLR1 JJtRQvIkPKnxeixZQ5ZNhlzlEid+1OF6k5br8= 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=hO9FaXucVlbZ9OK91BlP5qnmC4RjSFRm6qV6YI3B5iA=; b=V9LAv8MXfxBDqOAJmQOyCm3LAyAl/ymgBLpZ2XbdeiCPIifjcVNwsSGZGL4gLGxeI+ Zdhc3YClXAsHfC5U4fSKuwA5Xcs0TXsyjRT8P2gUl2KxRsj43ZIIw4pOZF0tnkjP95Ho LtbW4+akwQKZiI2tpqw2+6Qlfhvnt4d/0bXpOPdRE/QV2PAfMqj5RbnkEp8cgznrbjLk lAwAI4v3B5ZSksHNcTyZj5e4AzAMLtKJnlMXRXOQ6FvpUjC8skGqBsYNJsX6q3q23JMd bVilxLg6EDWslBOwxf+7o3KJaDnudYaKCt45lpaXtYv6ioo6xdoyHFTnXemow2M/+FLs wwdg== X-Gm-Message-State: AOUpUlFwEruFf+Ub4j+c87jFDKLb4Hv0lQHrSz5gQZvKge0Zf5DM+W2M t8DJ+KNEKVScJijmON7cxFjpZd4D X-Google-Smtp-Source: AAOMgpcPbxnkqnWPm556SmYu4pcqZVOvFZoY3Voi1uJePzVy3VByPDbZC/r1htBOc4R7eIX8GqmKyg== X-Received: by 2002:a5d:4306:: with SMTP id h6-v6mr1442553wrq.58.1531393612339; Thu, 12 Jul 2018 04:06:52 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.06.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:06:51 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:44 +0200 Message-Id: <1531393559-28958-5-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 4/9] usb: rockchip: implement K_FW_LBA_READ_10 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 implement reading blocks form selected device with LBA addressing. Corresponding command on workstation is: rkdeveloptool rl While we support reading more than one blocks per K_FW_LBA_READ_10 request, rkdeveloptool and original rockchip tool do perform chunk reads limiting the maximum size per chunk far lower than max int values. Signed-off-by: Alberto Panizzo Reviewed-by: Simon Glass Reviewed-by: Philipp Tomsich --- arch/arm/include/asm/arch-rockchip/f_rockusb.h | 3 + doc/README.rockusb | 1 + drivers/usb/gadget/f_rockusb.c | 104 ++++++++++++++++++++++++- 3 files changed, 107 insertions(+), 1 deletion(-) diff --git a/arch/arm/include/asm/arch-rockchip/f_rockusb.h b/arch/arm/include/asm/arch-rockchip/f_rockusb.h index 0b62771..3f2e763 100644 --- a/arch/arm/include/asm/arch-rockchip/f_rockusb.h +++ b/arch/arm/include/asm/arch-rockchip/f_rockusb.h @@ -27,6 +27,7 @@ */ #define RKUSB_BUF_SIZE EP_BUFFER_SIZE * 2 +#define RKBLOCK_BUF_SIZE 4096 #define RKUSB_STATUS_IDLE 0 #define RKUSB_STATUS_CMD 1 @@ -120,6 +121,8 @@ struct f_rockusb { unsigned int lba; unsigned int dl_size; unsigned int dl_bytes; + unsigned int ul_size; + unsigned int ul_bytes; struct blk_desc *desc; int reboot_flag; void *buf; diff --git a/doc/README.rockusb b/doc/README.rockusb index 3a93edc..7f58296 100644 --- a/doc/README.rockusb +++ b/doc/README.rockusb @@ -47,6 +47,7 @@ Current set of rkdeveloptool commands supported: - rfi: Read Flash Id - rd : Reset Device - td : Test Device Ready +- rl : Read blocks using LBA - wl : Write blocks using LBA To do diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index 0314ff0..82f421c 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -328,6 +328,7 @@ static int rockusb_tx_write(const char *buffer, unsigned int buffer_size) memcpy(in_req->buf, buffer, buffer_size); in_req->length = buffer_size; + debug("Transferring 0x%x bytes\n", buffer_size); usb_ep_dequeue(rockusb_func->in_ep, in_req); ret = usb_ep_queue(rockusb_func->in_ep, in_req, 0); if (ret) @@ -421,6 +422,65 @@ static unsigned int rx_bytes_expected(struct usb_ep *ep) return rx_remain; } +/* usb_request complete call back to handle upload image */ +static void tx_handler_ul_image(struct usb_ep *ep, struct usb_request *req) +{ + ALLOC_CACHE_ALIGN_BUFFER(char, rbuffer, RKBLOCK_BUF_SIZE); + struct f_rockusb *f_rkusb = get_rkusb(); + struct usb_request *in_req = rockusb_func->in_req; + int ret; + + /* Print error status of previous transfer */ + if (req->status) + debug("status: %d ep '%s' trans: %d len %d\n", req->status, + ep->name, req->actual, req->length); + + /* On transfer complete reset in_req and feedback host with CSW_GOOD */ + if (f_rkusb->ul_bytes >= f_rkusb->ul_size) { + in_req->length = 0; + in_req->complete = rockusb_complete; + + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_GOOD, + USB_BULK_CS_WRAP_LEN); + return; + } + + /* Proceed with current chunk */ + unsigned int transfer_size = f_rkusb->ul_size - f_rkusb->ul_bytes; + + if (transfer_size > RKBLOCK_BUF_SIZE) + transfer_size = RKBLOCK_BUF_SIZE; + /* Read at least one block */ + unsigned int blkcount = (transfer_size + f_rkusb->desc->blksz - 1) / + f_rkusb->desc->blksz; + + debug("ul %x bytes, %x blks, read lba %x, ul_size:%x, ul_bytes:%x, ", + transfer_size, blkcount, f_rkusb->lba, + f_rkusb->ul_size, f_rkusb->ul_bytes); + + int blks = blk_dread(f_rkusb->desc, f_rkusb->lba, blkcount, rbuffer); + + if (blks != blkcount) { + printf("failed reading from device %s: %d\n", + f_rkusb->dev_type, f_rkusb->dev_index); + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_FAIL, + USB_BULK_CS_WRAP_LEN); + return; + } + f_rkusb->lba += blkcount; + f_rkusb->ul_bytes += transfer_size; + + /* Proceed with USB request */ + memcpy(in_req->buf, rbuffer, transfer_size); + in_req->length = transfer_size; + in_req->complete = tx_handler_ul_image; + printf("Uploading 0x%x bytes\n", transfer_size); + usb_ep_dequeue(rockusb_func->in_ep, in_req); + ret = usb_ep_queue(rockusb_func->in_ep, in_req, 0); + if (ret) + printf("Error %d on queue\n", ret); +} + /* usb_request complete call back to handle down load image */ static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req) { @@ -565,6 +625,48 @@ static void cb_get_chip_version(struct usb_ep *ep, struct usb_request *req) rockusb_tx_write((char *)chip_info, sizeof(chip_info)); } +static void cb_read_lba(struct usb_ep *ep, struct usb_request *req) +{ + ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, + sizeof(struct fsg_bulk_cb_wrap)); + struct f_rockusb *f_rkusb = get_rkusb(); + int sector_count; + + memcpy((char *)cbw, req->buf, USB_BULK_CB_WRAP_LEN); + sector_count = (int)get_unaligned_be16(&cbw->CDB[7]); + f_rkusb->tag = cbw->tag; + + if (!f_rkusb->desc) { + char *type = f_rkusb->dev_type; + int index = f_rkusb->dev_index; + + f_rkusb->desc = blk_get_dev(type, index); + if (!f_rkusb->desc || + f_rkusb->desc->type == DEV_TYPE_UNKNOWN) { + printf("invalid device \"%s\", %d\n", type, index); + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_FAIL, + USB_BULK_CS_WRAP_LEN); + return; + } + } + + f_rkusb->lba = get_unaligned_be32(&cbw->CDB[2]); + f_rkusb->ul_size = sector_count * f_rkusb->desc->blksz; + f_rkusb->ul_bytes = 0; + + debug("require read %x bytes, %x sectors from lba %x\n", + f_rkusb->ul_size, sector_count, f_rkusb->lba); + + if (f_rkusb->ul_size == 0) { + rockusb_tx_write_csw(cbw->tag, cbw->data_transfer_length, + CSW_FAIL, USB_BULK_CS_WRAP_LEN); + return; + } + + /* Start right now sending first chunk */ + tx_handler_ul_image(ep, req); +} + static void cb_write_lba(struct usb_ep *ep, struct usb_request *req) { ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, @@ -675,7 +777,7 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = { }, { .cmd = K_FW_LBA_READ_10, - .cb = cb_not_support, + .cb = cb_read_lba, }, { .cmd = K_FW_LBA_WRITE_10, From patchwork Thu Jul 12 11:05:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942928 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="YJjVDGkK"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCxY4fZYz9rxx for ; Thu, 12 Jul 2018 21:14:09 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4BB75C21F49; Thu, 12 Jul 2018 11:11:28 +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=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 39132C21FB7; Thu, 12 Jul 2018 11:07:12 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B7170C21F37; Thu, 12 Jul 2018 11:07:06 +0000 (UTC) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by lists.denx.de (Postfix) with ESMTPS id A3BEBC21F9A for ; Thu, 12 Jul 2018 11:07:00 +0000 (UTC) Received: by mail-wm0-f67.google.com with SMTP id z13-v6so5593765wma.5 for ; Thu, 12 Jul 2018 04:07:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sR6BwZ9/Cm7AKWHrJaO33BAJ98uow12ZCpDjjs8UI2Y=; b=YJjVDGkKLJWgjubENcZfAr0qiMwCNxrsbWsh6Z7E9imvqyGWvJqC1IqePLaX0S+wOc UJpyrQqhQ0cHfUTGYmfHAXI/TZfg92TOW0EtCJyu+14V0IjAp4myymL46Gmw91BvsEqI DUzyoONUEMjh062ly4QSR7nraJbYixxl7DJtE= 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=sR6BwZ9/Cm7AKWHrJaO33BAJ98uow12ZCpDjjs8UI2Y=; b=ifEA3skEO2hswjsDiVWeC1K0Z0+xC7rXs7NYkM9k+N85EeY3NyK7JmHDj260qIA05j jb+PNJh3/1mkYbTCMAzNpqzxc2KvMbnvPU0TNG7AJJW2bThgwhxfL/BMy1o4nZzbtHLf 8/V7lw8RNVSumg2GeF9U21vn6JaBfU4faxNFKbzlO0u9ryvo4U1150/2i3mzZ0bg8sBI W6QoQvy/Ps7Wv+XhStCvmDdp4FhPfJ+qTVxObJHuyzfGwHuyxBpj1ivt1WH0r2I9ajtH GFHhVAsqvd1LET4vqNWVXnSQUqSI2lAYCODA5aJPiorREa8vYZQYuP8Z8exCGarWkIj0 FQXw== X-Gm-Message-State: AOUpUlG8exN6F6B2iXcTe4QkG+mhdjCtPxKWja2Qxi/iLMMhuLCnf/iQ OxPSPJbtvmof6wgXEHR344sLa0jC X-Google-Smtp-Source: AAOMgpd1GV02h3ZdmdB0x0RxuwYQ2TW0Z7ilVAxscDCNK3prwUjfmvo5gOLqbB2YlIpH3WbpSkSSXw== X-Received: by 2002:a1c:5fc1:: with SMTP id t184-v6mr1066499wmb.8.1531393620161; Thu, 12 Jul 2018 04:07:00 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.06.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:06:59 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:45 +0200 Message-Id: <1531393559-28958-6-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 5/9] usb: rockchip: implement K_FW_LBA_ERASE_10 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 command is part of the write partition sequence performed by rkdeveloptool: one partition is first completely erased and than wrote. Signed-off-by: Alberto Panizzo Reviewed-by: Simon Glass Reviewed-by: Philipp Tomsich --- arch/arm/include/asm/arch-rockchip/f_rockusb.h | 1 + doc/README.rockusb | 1 + drivers/usb/gadget/f_rockusb.c | 48 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/arch/arm/include/asm/arch-rockchip/f_rockusb.h b/arch/arm/include/asm/arch-rockchip/f_rockusb.h index 3f2e763..9772321 100644 --- a/arch/arm/include/asm/arch-rockchip/f_rockusb.h +++ b/arch/arm/include/asm/arch-rockchip/f_rockusb.h @@ -63,6 +63,7 @@ K_FW_LOW_FORMAT = 0x1C, K_FW_SET_RESET_FLAG = 0x1E, K_FW_SPI_READ_10 = 0x21, K_FW_SPI_WRITE_10 = 0x22, +K_FW_LBA_ERASE_10 = 0x25, K_FW_SESSION = 0X30, K_FW_RESET = 0xff, diff --git a/doc/README.rockusb b/doc/README.rockusb index 7f58296..66437e1 100644 --- a/doc/README.rockusb +++ b/doc/README.rockusb @@ -49,6 +49,7 @@ Current set of rkdeveloptool commands supported: - td : Test Device Ready - rl : Read blocks using LBA - wl : Write blocks using LBA +- wlx: Write partition To do ----- diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index 82f421c..bcdc2ba 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -692,6 +692,50 @@ static void cb_write_lba(struct usb_ep *ep, struct usb_request *req) } } +static void cb_erase_lba(struct usb_ep *ep, struct usb_request *req) +{ + ALLOC_CACHE_ALIGN_BUFFER(struct fsg_bulk_cb_wrap, cbw, + sizeof(struct fsg_bulk_cb_wrap)); + struct f_rockusb *f_rkusb = get_rkusb(); + int sector_count, lba, blks; + + memcpy((char *)cbw, req->buf, USB_BULK_CB_WRAP_LEN); + sector_count = (int)get_unaligned_be16(&cbw->CDB[7]); + f_rkusb->tag = cbw->tag; + + if (!f_rkusb->desc) { + char *type = f_rkusb->dev_type; + int index = f_rkusb->dev_index; + + f_rkusb->desc = blk_get_dev(type, index); + if (!f_rkusb->desc || + f_rkusb->desc->type == DEV_TYPE_UNKNOWN) { + printf("invalid device \"%s\", %d\n", type, index); + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_FAIL, + USB_BULK_CS_WRAP_LEN); + return; + } + } + + lba = get_unaligned_be32(&cbw->CDB[2]); + + debug("require erase %x sectors from lba %x\n", + sector_count, lba); + + blks = blk_derase(f_rkusb->desc, lba, sector_count); + if (blks != sector_count) { + printf("failed erasing device %s: %d\n", f_rkusb->dev_type, + f_rkusb->dev_index); + rockusb_tx_write_csw(f_rkusb->tag, + cbw->data_transfer_length, CSW_FAIL, + USB_BULK_CS_WRAP_LEN); + return; + } + + rockusb_tx_write_csw(cbw->tag, cbw->data_transfer_length, CSW_GOOD, + USB_BULK_CS_WRAP_LEN); +} + void __weak rkusb_set_reboot_flag(int flag) { struct f_rockusb *f_rkusb = get_rkusb(); @@ -824,6 +868,10 @@ static const struct cmd_dispatch_info cmd_dispatch_info[] = { .cb = cb_not_support, }, { + .cmd = K_FW_LBA_ERASE_10, + .cb = cb_erase_lba, + }, + { .cmd = K_FW_SESSION, .cb = cb_not_support, }, From patchwork Thu Jul 12 11:05:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942921 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="P+uS/5b2"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCwB5StBz9rxx for ; Thu, 12 Jul 2018 21:12:58 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 718D9C21F9C; Thu, 12 Jul 2018 11:11:44 +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=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 DFBE9C21FC5; Thu, 12 Jul 2018 11:07:17 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3321BC21FC5; Thu, 12 Jul 2018 11:07:11 +0000 (UTC) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by lists.denx.de (Postfix) with ESMTPS id B8301C21E7E for ; Thu, 12 Jul 2018 11:07:07 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id v25-v6so5285832wmc.0 for ; Thu, 12 Jul 2018 04:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PCkWd0DAk4+qASRq3FXn7/UZEKhyQcpFfSCpF7zOhjw=; b=P+uS/5b2xZG5ik/+U3cLpl1aZmBhxNEcm4tgvPXvgd8GptP1jtUm1vNjvQZWZX1FIb 5E+pMop3/Dk94tXHzVkEnUcrveRoKmNpCntdF/I4cr6V4kW5ph7RivuZik0jZ6sgYbOC TZgOj9+/3TTP3me+8R8opeYpH8gnevsnnTu9E= 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=PCkWd0DAk4+qASRq3FXn7/UZEKhyQcpFfSCpF7zOhjw=; b=ogCAsNfF3WwK1l1AJXlzQ0jjqRDGHSdeYVC7Giby7u1z/J2pGcGlqmYWuB/zBJ8yt7 p8xeStvY/MlOME92/GGnfOM4X/199VWcyf1kUnL+hoqxskK2+AcKuSHFoCrTMBM2ABIY sBH2gyLc+Xwute2yKdOVxpOqge2gXVpzk1f+0QZAPbdpQ5XQ3wTXPlSqreUaQH5zD9U3 mmmmqVZjdwCOIMb9ObGdqv7onC8k++NO80azghxEX4I2/nFK1I3aRaZ3KnLRmvjuTqgn 8Bt/3I/twnsaShvRPyWK8Jflj4yOeF9K6y9nimxWpks/qCier00eIVyxuTOtpU/8/2BO NstQ== X-Gm-Message-State: AOUpUlGIJa0JQIh6Iq69loIcpXuTl1qrgs+75M9DHj1KKv+9/3RUkzvn 2lCIQu938y2Elj19bAP+6BvXcaFZ X-Google-Smtp-Source: AAOMgpeUj346Mz+FLRej6HDGEa2kp1HC1Lm7q2qfCccFpfmXEOttVS8ScwfMX3h9lyX1eeGkOlrImQ== X-Received: by 2002:a1c:9c0b:: with SMTP id f11-v6mr1061012wme.148.1531393627287; Thu, 12 Jul 2018 04:07:07 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.07.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:07:06 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:46 +0200 Message-Id: <1531393559-28958-7-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 6/9] usb: rockchip: be quiet on serial port while transferring data 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" While downloading or uploading megabytes of data we had thousands of printf in console like: transfer 0x10000 bytes done OR Uploading 0x1000 bytes This because transfers are chunked and there is no way on target side to know the overall transfer size (to print one string per overall transfer). All these prints on serial console do slow down significantly the transfer and does not offer a significant information to the developer: rkdeveloptool and Rockchip original tool do use small chunks read/writes on big transfers. This allows on workstation to print percentage of transfer complete and as well offers to developer the information about: transfer is running OK. On error, either the percentage will stop or an error will be shown on workstation console. Signed-off-by: Alberto Panizzo Reviewed-by: Philipp Tomsich --- drivers/usb/gadget/f_rockusb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index bcdc2ba..0959b8c 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -474,7 +474,7 @@ static void tx_handler_ul_image(struct usb_ep *ep, struct usb_request *req) memcpy(in_req->buf, rbuffer, transfer_size); in_req->length = transfer_size; in_req->complete = tx_handler_ul_image; - printf("Uploading 0x%x bytes\n", transfer_size); + debug("Uploading 0x%x bytes\n", transfer_size); usb_ep_dequeue(rockusb_func->in_ep, in_req); ret = usb_ep_queue(rockusb_func->in_ep, in_req, 0); if (ret) @@ -536,7 +536,7 @@ static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req) req->complete = rx_handler_command; req->length = EP_BUFFER_SIZE; f_rkusb->buf = f_rkusb->buf_head; - printf("transfer 0x%x bytes done\n", f_rkusb->dl_size); + debug("transfer 0x%x bytes done\n", f_rkusb->dl_size); f_rkusb->dl_size = 0; rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_GOOD, USB_BULK_CS_WRAP_LEN); From patchwork Thu Jul 12 11:05:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942930 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="n7fInYKm"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCzC4t7wz9rxx for ; Thu, 12 Jul 2018 21:15:35 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2260BC21F6D; Thu, 12 Jul 2018 11:12:00 +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=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 E6E9CC21FB5; Thu, 12 Jul 2018 11:08:50 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0A869C21F9B; Thu, 12 Jul 2018 11:08:49 +0000 (UTC) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by lists.denx.de (Postfix) with ESMTPS id 314CFC21FC4 for ; Thu, 12 Jul 2018 11:07:14 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id z13-v6so5594397wma.5 for ; Thu, 12 Jul 2018 04:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=JJ1kmmFIXQ0sqzF13Ns54P28v/OXrLgrM++lTPGKMJo=; b=n7fInYKmFgv839ktw/r69/h6CiAGinUOvUXUbzPkv+NFznQz3KXM2cr6I6N2KbBzSq fMr+uGAQDXwHCJcCVdWpgGIICEGiZhZ1/eKZ/C1B4EZHm0ddKotY4ENFa0dfIjHAdRrN wNHGiUMlENBIRZUMPHrJU7obtewO/WOw7OJzg= 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=JJ1kmmFIXQ0sqzF13Ns54P28v/OXrLgrM++lTPGKMJo=; b=kjCSNzVR/3vbPNUuPp4OX0TbBxuo7MtSdNMltxAFEjm1qkxFJE4CG+LKZGuY+rQlWG Yccw/aT1skIZoloIJ59LpFM1ALsEPdyA+8tLvzlyAkM91UMDMtaVTgTU8qnbf/MkAw9t aVacGeodVrAugzE7959JZhpFsaYeY3mlh9AqJS6k540jZLH0mWM1IX90BLifymSZPiGX WMw1FmyuBz3AQhkkoWsqi9cM7bZkvIQxms9U8D4EdwnZiyKriJqmXPbSLIoA8oxRpXH6 4Pj8aZVwxJGTFRymPMEsfcSTHIdpk6CYJI941ByPJi6yokovnvECnYraPaeJDeh/MCm2 b+yg== X-Gm-Message-State: AOUpUlEbW+ntkgTsWi+ckwnFYK/9DHYy3cj8lfY/eseLWvUkfH5XQ0q9 FRhCE8rNHo0Uhbanpv8B/KutrD6r X-Google-Smtp-Source: AAOMgpfJHFpUrXHaKV8GkH3+4GCg25umxl/BiRPXDxWzMLt0KlKg8YJ8ltyGHgWBOKZ22itNAviU5w== X-Received: by 2002:a1c:7d47:: with SMTP id y68-v6mr1024239wmc.62.1531393633763; Thu, 12 Jul 2018 04:07:13 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.07.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:07:13 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:47 +0200 Message-Id: <1531393559-28958-8-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Subject: [U-Boot] [PATCH v3 7/9] usb: rockchip: boost up write speed from 4MB/s to 15MB/s 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" Speedup transfers increasing the max chunk size. Buffers are allocated with memalign thus developer is noticed when heap is full and in current configuration a buffer allocation of 64K till now is safe. Signed-off-by: Alberto Panizzo Reviewed-by: Simon Glass --- arch/arm/include/asm/arch-rockchip/f_rockusb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/include/asm/arch-rockchip/f_rockusb.h b/arch/arm/include/asm/arch-rockchip/f_rockusb.h index 9772321..141aae6 100644 --- a/arch/arm/include/asm/arch-rockchip/f_rockusb.h +++ b/arch/arm/include/asm/arch-rockchip/f_rockusb.h @@ -19,7 +19,7 @@ #define RX_ENDPOINT_MAXIMUM_PACKET_SIZE_1_1 0x0040 #define TX_ENDPOINT_MAXIMUM_PACKET_SIZE 0x0040 -#define EP_BUFFER_SIZE 4096 +#define EP_BUFFER_SIZE 65536 /* * EP_BUFFER_SIZE must always be an integral multiple of maxpacket size * (64 or 512 or 1024), else we break on certain controllers like DWC3 From patchwork Thu Jul 12 11:05:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942929 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="qcTCfJ5p"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCxy3N8tz9s1R for ; Thu, 12 Jul 2018 21:14:30 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2AB5BC21FB7; Thu, 12 Jul 2018 11:12:18 +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=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 9E161C21F9B; Thu, 12 Jul 2018 11:08:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 14906C21C27; Thu, 12 Jul 2018 11:08:50 +0000 (UTC) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by lists.denx.de (Postfix) with ESMTPS id 352C1C21C27 for ; Thu, 12 Jul 2018 11:07:21 +0000 (UTC) Received: by mail-wm0-f67.google.com with SMTP id w16-v6so5233488wmc.2 for ; Thu, 12 Jul 2018 04:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Vjf6/SeOfJ2gObaw+T4m8LGE2otJ+VxInigAqVjAP0Y=; b=qcTCfJ5p2BSsPOwZLGUvkjL8/CaGUXbfozSzR9tHHZF/mQzbCGVbn+sdAzudBZak+D Op7CV639IRGTfDkLrDBU9Ap52g2Qb5Jsdq1mM2Jr0qEYoT4cKaVjpDusgZ4pZUJuZ0Dq KwrtyO3D3Dd1uhQRGoy3hePReFalSbB3DZpgw= 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=Vjf6/SeOfJ2gObaw+T4m8LGE2otJ+VxInigAqVjAP0Y=; b=EKbVqOCpNmT4x/DsKsySO3avhHJAg1BRkAWDFsYKQeh16ETbKSV07GgvaNu3OGpmJC HI09w15UKdfitLXPRikflVrs+pO5lMTdAbmq+2ebXQe31bRKdULGHe6Utm3EBZL9zker 4kO9ZZo1sq+cTXhhRmvma4r1eO4KLHLs6PBEOGJLisXLUujRje1TeoV55xpPlOfh0ujM Ej4nk7QKgIxdKNH6DxnwC3dc6Di9JLNLgbi29Z6WxIQ3BfAsKAKhH/W7FziI6AM+HYV0 +skwGaYYfPnqnGXmrE5hMmDko26g416TfHp2bI+He7iF5/hXCvetnfBvnuDoQfKOXrF9 Ma5w== X-Gm-Message-State: AOUpUlGo3hVIrAab0HUM0VFw/YP2/Cthy0qN9yBRw/uVPd/wt9Fs9fAM TXJGwIaLx3osAcxvnMKHPVsiLfrq X-Google-Smtp-Source: AAOMgpfAj52oUGM8wDhi4l+VuhOECNRKHcWBpUZIyo1kMk10pRbe1wnXtMHdd6qerjn+A255Gxi3ZA== X-Received: by 2002:a1c:9c0b:: with SMTP id f11-v6mr1061559wme.148.1531393640747; Thu, 12 Jul 2018 04:07:20 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.07.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:07:20 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:48 +0200 Message-Id: <1531393559-28958-9-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 8/9] usb: rockchip: fix printing csw debug info 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" Workstation tool was happy while console on device were printing random numbers.. Signed-off-by: Alberto Panizzo --- drivers/usb/gadget/f_rockusb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index 0959b8c..574d610 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -384,7 +384,7 @@ static int rockusb_tx_write_csw(u32 tag, int residue, u8 status, int size) csw->residue = cpu_to_be32(residue); csw->status = status; #ifdef DEBUG - printcsw((char *)&csw); + printcsw((char *)csw); #endif return rockusb_tx_write((char *)csw, size); } From patchwork Thu Jul 12 11:05:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Panizzo X-Patchwork-Id: 942925 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; dmarc=none (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="bjyq6HU3"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41RCwy5Mv0z9rxx for ; Thu, 12 Jul 2018 21:13:38 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 60656C21FB5; Thu, 12 Jul 2018 11:12:34 +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=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 71E29C21FC3; Thu, 12 Jul 2018 11:09:02 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 963BAC21FB4; Thu, 12 Jul 2018 11:09:00 +0000 (UTC) Received: from mail-wm0-f44.google.com (mail-wm0-f44.google.com [74.125.82.44]) by lists.denx.de (Postfix) with ESMTPS id BAA92C21E7E for ; Thu, 12 Jul 2018 11:07:27 +0000 (UTC) Received: by mail-wm0-f44.google.com with SMTP id s12-v6so5292378wmc.1 for ; Thu, 12 Jul 2018 04:07:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TD9e57kOYfGiQ1M23GLOFCwNXzXH54pz5Y5o5FnjWqk=; b=bjyq6HU3tfgMaEo7WCeaA00hQy/4CPsh1xNRnEy54v0y+y/jTuHb1QS3HzxsdvN63n pkuFkngY25ODJWgaIjeD0UHcm6EIybkTh1mGQ0uGP+ulCvbwHFsGc1183Q/xWDh/7Pif sjkGNEHpNByjQiDgt4GGzJ/VNYpFFtuis1A/o= 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=TD9e57kOYfGiQ1M23GLOFCwNXzXH54pz5Y5o5FnjWqk=; b=K6BSf67HDV8zFhKC4QoaEVKhXF8/VLCxdeIsb+ywtdTshfmDViDVbcvjl2CCIyFAtH SwbWD0gVBeklkKJCzACxNFNVZT8WYzFsJO+vZdzU4QNRFB6f6CeTN7Swo1G3lGsl9gjo Gb2zXK3aYVkHmnEN7+f1PeMFTWHnsGPsHATzjoiXY6pHx2mcbDB2Rj+j2x5uke7/mytf Ei29gysH+R8dq2u++S7w8vhf6sQokIlXcv2XAQz4HZXDNph9CDu/lNS96NEtC+A8sErq 0mwmpm7pZtZfDRcQbsgOXUvOkIVoh0SRvyF/n+Opm1pMJNXynB8mibiSXVeSAKbFWobt EvyQ== X-Gm-Message-State: AOUpUlHz7EKLOAODQ7/4iBFJ9jTln4ur2lbGfIxCY7CvHXfCngcvzLYp UrptdvCdrO1HwfBZuI4mivxMVMD2 X-Google-Smtp-Source: AAOMgpfx9Zph7wi5PNJ7xYj9QaYuu4zWit0sr26+bY373HoxB2EDeEfn62yc2R+Gu4oxMp8C8P+/nw== X-Received: by 2002:a1c:2807:: with SMTP id o7-v6mr1009139wmo.11.1531393647281; Thu, 12 Jul 2018 04:07:27 -0700 (PDT) Received: from localhost.localdomain (host-9473-86-113.popwifi.it. [94.73.86.113]) by smtp.googlemail.com with ESMTPSA id t140-v6sm6982421wmd.14.2018.07.12.04.07.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Jul 2018 04:07:26 -0700 (PDT) From: Alberto Panizzo To: u-boot@lists.denx.de Date: Thu, 12 Jul 2018 13:05:49 +0200 Message-Id: <1531393559-28958-10-git-send-email-alberto@amarulasolutions.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> References: <1531393559-28958-1-git-send-email-alberto@amarulasolutions.com> Cc: Marek Vasut Subject: [U-Boot] [PATCH v3 9/9] usb: rockchip: on K_FW_LBA_WRITE_10 remove magic block size of 512 bytes 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" As well as in K_FW_LBA_READ_10 and K_FW_LBA_ERASE_10 take device's block size from f_rkusb->desc->blksz instead of the fixed 512 bytes. Keep original behaviour of retry probing assigned block device on every host request to manage late SDCard plugs. Signed-off-by: Alberto Panizzo --- drivers/usb/gadget/f_rockusb.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/drivers/usb/gadget/f_rockusb.c b/drivers/usb/gadget/f_rockusb.c index 574d610..e81eb16 100644 --- a/drivers/usb/gadget/f_rockusb.c +++ b/drivers/usb/gadget/f_rockusb.c @@ -490,19 +490,6 @@ static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req) unsigned int buffer_size = req->actual; transfer_size = f_rkusb->dl_size - f_rkusb->dl_bytes; - if (!f_rkusb->desc) { - char *type = f_rkusb->dev_type; - int index = f_rkusb->dev_index; - - f_rkusb->desc = blk_get_dev(type, index); - if (!f_rkusb->desc || - f_rkusb->desc->type == DEV_TYPE_UNKNOWN) { - puts("invalid mmc device\n"); - rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_FAIL, - USB_BULK_CS_WRAP_LEN); - return; - } - } if (req->status != 0) { printf("Bad status: %d\n", req->status); @@ -516,7 +503,7 @@ static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req) memcpy((void *)f_rkusb->buf, buffer, transfer_size); f_rkusb->dl_bytes += transfer_size; - int blks = 0, blkcnt = transfer_size / 512; + int blks = 0, blkcnt = transfer_size / f_rkusb->desc->blksz; debug("dl %x bytes, %x blks, write lba %x, dl_size:%x, dl_bytes:%x, ", transfer_size, blkcnt, f_rkusb->lba, f_rkusb->dl_size, @@ -547,8 +534,8 @@ static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request *req) else f_rkusb->buf = f_rkusb->buf_head; - debug("remain %x bytes, %x sectors\n", req->length, - req->length / 512); + debug("remain %x bytes, %lx sectors\n", req->length, + req->length / f_rkusb->desc->blksz); } req->actual = 0; @@ -676,10 +663,26 @@ static void cb_write_lba(struct usb_ep *ep, struct usb_request *req) memcpy((char *)cbw, req->buf, USB_BULK_CB_WRAP_LEN); sector_count = (int)get_unaligned_be16(&cbw->CDB[7]); + f_rkusb->tag = cbw->tag; + + if (!f_rkusb->desc) { + char *type = f_rkusb->dev_type; + int index = f_rkusb->dev_index; + + f_rkusb->desc = blk_get_dev(type, index); + if (!f_rkusb->desc || + f_rkusb->desc->type == DEV_TYPE_UNKNOWN) { + printf("invalid device \"%s\", %d\n", type, index); + rockusb_tx_write_csw(f_rkusb->tag, 0, CSW_FAIL, + USB_BULK_CS_WRAP_LEN); + return; + } + } + f_rkusb->lba = get_unaligned_be32(&cbw->CDB[2]); - f_rkusb->dl_size = sector_count * 512; + f_rkusb->dl_size = sector_count * f_rkusb->desc->blksz; f_rkusb->dl_bytes = 0; - f_rkusb->tag = cbw->tag; + debug("require write %x bytes, %x sectors to lba %x\n", f_rkusb->dl_size, sector_count, f_rkusb->lba);