From patchwork Tue Mar 3 16:32:12 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: 445802 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 8CBBD140077 for ; Wed, 4 Mar 2015 03:40:33 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 07E124B5B9; Tue, 3 Mar 2015 17:40:32 +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 m_lNzxOJta9D; Tue, 3 Mar 2015 17:40:31 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id ABBFC4A01C; Tue, 3 Mar 2015 17:40:31 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C32A54A01B 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 cs8FB7W-Nx4O 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 mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTPS id 626B54B58F for ; Tue, 3 Mar 2015 17:40:27 +0100 (CET) Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NKN006O8A96XA00@mailout1.samsung.com> for u-boot@lists.denx.de; Wed, 04 Mar 2015 01:39:06 +0900 (KST) X-AuditID: cbfee61a-f79c06d000004e71-d0-54f5e3aa19f1 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 05.3A.20081.AA3E5F45; Wed, 04 Mar 2015 01:39:06 +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:39:06 +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:12 +0100 Message-id: <1425400336-20442-11-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+NgFtrJLMWRmVeSWpSXmKPExsVy+t9jAd1Vj7+GGEybIWhx8H69xeX92ha7 /t5ntHhx7yKLxYWnPWwWbx5xW6w9cpfd4k1bI6PF/t4NTBY7Lt9gseh5pGXx6mAbi8XkxfOZ Ld7u7WR34POYN+sEi8fZOzsYPdZNe8vs0bdlFaPH8RvbmTw2zg0NYIvisklJzcksSy3St0vg ypj7jKvgKG/Fk7sn2BsYe7i7GDk5JARMJP4vWscIYYtJXLi3nq2LkYtDSGARo0TP+u8sEE4X k8TpL3fZQarYBPQkPt99ygRiiwj4S1x9fASsiFngCZPE4z1bWEASwgKWEic2TWIGsVkEVCXO 3moCa+AVcJeYsv4p1DpFie5nE9hAbE6g+PJrJ5ghtjUxSrw4/IJ5AiPvAkaGVYyiqQXJBcVJ 6bmGesWJucWleel6yfm5mxjBAfpMagfjygaLQ4wCHIxKPLwvOL+GCLEmlhVX5h5ilOBgVhLh FbgFFOJNSaysSi3Kjy8qzUktPsQozcGiJM6rZN8WIiSQnliSmp2aWpBaBJNl4uCUamA0XZN/ 9FDKPZuOX5fCZkifn5HTECkW7lE1SX3vGl3faf1Zn9S/d0cuONTme+BABXdOlcTk208+7zFT jnnM4PF3xuEp7wTqmp6rzPv6rLD48k7zOycu6F9k1bv34+jlEyXFJfcvPz98zrNoas9XzpdT r9RYSV4/e+noSX3rC0uShD8LukoeajQxV2Ipzkg01GIuKk4EADdmGgxMAgAA Cc: Marek Szyprowski , nsekhar@ti.com, Przemyslaw Marczak , Tom Rini , rogerq@ti.com Subject: [U-Boot] [PATCH 10/14] usb: dwc3: optimize interrupt loop 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" From: Marek Szyprowski There is no point in calling dwc3_thread_interrupt() if no event is pending. There is also no point in flushing event cache in EVERY loop iteration. Signed-off-by: Marek Szyprowski --- drivers/usb/dwc3/core.c | 7 ------- drivers/usb/dwc3/gadget.c | 15 +++++++++++++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 45bb724..d067ef3 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -766,18 +766,11 @@ void dwc3_uboot_exit(int index) void dwc3_uboot_handle_interrupt(int index) { struct dwc3 *dwc = NULL; - int i; - struct dwc3_event_buffer *evt; list_for_each_entry(dwc, &dwc3_list, list) { if (dwc->index != index) continue; - for (i = 0; i < dwc->num_event_buffers; i++) { - evt = dwc->ev_buffs[i]; - dwc3_flush_cache((int)evt->buf, evt->length); - } - dwc3_gadget_uboot_handle_interrupt(dwc); break; } diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 737cb3e..d5dc70c 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2681,6 +2681,17 @@ void dwc3_gadget_exit(struct dwc3 *dwc) */ void dwc3_gadget_uboot_handle_interrupt(struct dwc3 *dwc) { - dwc3_interrupt(0, dwc); - dwc3_thread_interrupt(0, dwc); + int ret = dwc3_interrupt(0, dwc); + + if (ret == IRQ_WAKE_THREAD) { + int i; + struct dwc3_event_buffer *evt; + + for (i = 0; i < dwc->num_event_buffers; i++) { + evt = dwc->ev_buffs[i]; + dwc3_flush_cache((int)evt->buf, evt->length); + } + + dwc3_thread_interrupt(0, dwc); + } }