From patchwork Tue Mar 3 16:32:15 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?=C5=81ukasz_Majewski?= X-Patchwork-Id: 445817 X-Patchwork-Delegate: l.majewski@samsung.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 53DA31400DE for ; Wed, 4 Mar 2015 03:57:53 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A6C51A7433; Tue, 3 Mar 2015 17:57:10 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ES4OfcktyXVS; Tue, 3 Mar 2015 17:57:10 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EBABC392C; Tue, 3 Mar 2015 17:56:38 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7A7E54A01C for ; Tue, 3 Mar 2015 17:40:27 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eLAInh71N5nE for ; Tue, 3 Mar 2015 17:40:27 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by theia.denx.de (Postfix) with ESMTPS id 07E094A01B for ; Tue, 3 Mar 2015 17:40:23 +0100 (CET) Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NKN000W0AB8C070@mailout2.samsung.com> for u-boot@lists.denx.de; Wed, 04 Mar 2015 01:40:20 +0900 (KST) X-AuditID: cbfee61b-f79d76d0000024d6-79-54f5e3f42c71 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id C5.8B.09430.4F3E5F45; Wed, 04 Mar 2015 01:40:20 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NKN00J3L9XXLX60@mmp1.samsung.com>; Wed, 04 Mar 2015 01:40:20 +0900 (KST) From: Lukasz Majewski To: u-boot@lists.denx.de, Kishon Vijay Abraham I , marex@denx.de Date: Tue, 03 Mar 2015 17:32:15 +0100 Message-id: <1425400336-20442-14-git-send-email-l.majewski@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1425400336-20442-1-git-send-email-l.majewski@samsung.com> References: <1424700152-8554-1-git-send-email-l.majewski@samsung.com> <1425400336-20442-1-git-send-email-l.majewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPLMWRmVeSWpSXmKPExsVy+t9jAd0vj7+GGFzbpmdx8H69xeX92ha7 /t5ntHhx7yKLxYWnPWwWbx5xW7x5uJnRYu2Ru+wWb9oaGS32925gsthx+QaLRc8jLYtXB9tY LCYvns9s8XZvJ7sDv8e8WSdYPM7e2cHosW7aW2aPvi2rGD2O39jO5LFxbmgAWxSXTUpqTmZZ apG+XQJXxu/9J5kKPghUrP/+jrGB8TZvFyMnh4SAicSRF1fYIWwxiQv31rN1MXJxCAksYpSY NqeVBcLpYpK4OfUPG0gVm4CexOe7T5lAbBEBf4mrj4+AFTELTGCWaP34BKxIWMBFYvPnuWBj WQRUJT5eO8EMYvMKuEscXrONFWKdokT3swlg9ZxA8eVgNSDbmhglXhx+wTyBkXcBI8MqRtHU guSC4qT0XCO94sTc4tK8dL3k/NxNjOBgfSa9g3FVg8UhRgEORiUe3hecX0OEWBPLiitzDzFK cDArifAK3AIK8aYkVlalFuXHF5XmpBYfYpTmYFES51WybwsREkhPLEnNTk0tSC2CyTJxcEo1 MIof/LLZjOd2ZfOB5yyal9tf9PWl/56ucGGi/BmbM46p6Y/KVJ2UtltNVdFYHFj++lXl3BOH s1b7rYmPU7+oyrf1xvFQp971m+6GsbUa6R9TMPryvMTZmHGC9JOZC44ulTi29/xM3l++LkE/ BTYIBeru2WVt8HipzT+jw+0v9qi84Nr5mim/KlmJpTgj0VCLuag4EQBxQ5jBUgIAAA== X-Mailman-Approved-At: Tue, 03 Mar 2015 17:56:12 +0100 Cc: Marek Szyprowski , nsekhar@ti.com, Przemyslaw Marczak , Tom Rini , rogerq@ti.com Subject: [U-Boot] [PATCH 13/14] usb: dwc3: Correct clean up code for requests X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" For u-boot dwc3 driver the scatter gather list support has been removed from original linux code. It is correct, since we try to send one request at a time. However, the cleanup left spurious break, which caused early exit from loop at dwc3_cleanup_done_reqs() function. As a result the dwc3_gadget_giveback() wasn't called and caused USB Mass Storage to hang. This commit removes this problem and refactor the code to remove superfluous do { } while(1) loop. Test HW: Odroid XU3 (with ./test/ums/ums_gadget_test.sh) Signed-off-by: Lukasz Majewski --- drivers/usb/dwc3/gadget.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index b282f6a..763c951 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1753,33 +1753,23 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc, struct dwc3_ep *dep, struct dwc3_request *req; struct dwc3_trb *trb; unsigned int slot; - int ret; - - do { - req = next_request(&dep->req_queued); - if (!req) { - WARN_ON_ONCE(1); - return 1; - } - - slot = req->start_slot; - if ((slot == DWC3_TRB_NUM - 1) && - usb_endpoint_xfer_isoc(dep->endpoint.desc)) - slot++; - slot %= DWC3_TRB_NUM; - trb = &dep->trb_pool[slot]; - dwc3_flush_cache((int)trb, sizeof(*trb)); - ret = __dwc3_cleanup_done_trbs(dwc, dep, req, trb, - event, status); - if (ret) - break; + req = next_request(&dep->req_queued); + if (!req) { + WARN_ON_ONCE(1); + return 1; + } - dwc3_gadget_giveback(dep, req, status); + slot = req->start_slot; + if ((slot == DWC3_TRB_NUM - 1) && + usb_endpoint_xfer_isoc(dep->endpoint.desc)) + slot++; + slot %= DWC3_TRB_NUM; + trb = &dep->trb_pool[slot]; - if (ret) - break; - } while (1); + dwc3_flush_cache((int)trb, sizeof(*trb)); + __dwc3_cleanup_done_trbs(dwc, dep, req, trb, event, status); + dwc3_gadget_giveback(dep, req, status); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && list_empty(&dep->req_queued)) {