From patchwork Thu Apr 23 11:55:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabrice Gasnier X-Patchwork-Id: 11505527 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0C41114DD for ; Thu, 23 Apr 2020 11:56:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E78D72098B for ; Thu, 23 Apr 2020 11:56:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="OTWUZk+a" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727772AbgDWL40 (ORCPT ); Thu, 23 Apr 2020 07:56:26 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:10218 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727833AbgDWL4Y (ORCPT ); Thu, 23 Apr 2020 07:56:24 -0400 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03NBqF6g011749; Thu, 23 Apr 2020 13:56:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=UE7RBogCmrw0kK0ktJ7u/6MLbU/BmEcfGx87G6u+JV4=; b=OTWUZk+aR0qypTHmTNA2dSdegga3pStBNBWtKsekHYo4suu78mv41S5yAK/F3wbuswjX qqqVC7yGf/hZgvOHedXCjF5v9Qehjs7XOWs3rqo1mxfujmA485TySp4Lq1KhoUxgxT8A 95zn1aoOic6mMNNAWe0bXCA+eCzvPE07jLFsyjW0Tl4SQf2npYCZTHpuP8PPjpQ6oFQR /Sc4OmAbhtDKDILao608/dQqdPctIrZ6153RVKO9/HSNwEpQhEGzDDyRQi/oJVm1+kDI VgLAoc3UV64pNhkgWEh9AtvrbogD7G+IpDad+2zc/CoLK+2Ibhm02/0+/A3fTU7d6d0w iA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 30fq11vjj2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Apr 2020 13:56:16 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 4B7B710002A; Thu, 23 Apr 2020 13:56:16 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag5node3.st.com [10.75.127.15]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id EB5532BC7CE; Thu, 23 Apr 2020 13:56:15 +0200 (CEST) Received: from localhost (10.75.127.47) by SFHDAG5NODE3.st.com (10.75.127.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 23 Apr 2020 13:56:15 +0200 From: Fabrice Gasnier To: , , CC: , , , , Subject: [PATCH v2 1/4] usb: dwc2: gadget: move gadget resume after the core is in L0 state Date: Thu, 23 Apr 2020 13:55:53 +0200 Message-ID: <1587642956-8157-2-git-send-email-fabrice.gasnier@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587642956-8157-1-git-send-email-fabrice.gasnier@st.com> References: <1587642956-8157-1-git-send-email-fabrice.gasnier@st.com> MIME-Version: 1.0 X-Originating-IP: [10.75.127.47] X-ClientProxiedBy: SFHDAG3NODE1.st.com (10.75.127.7) To SFHDAG5NODE3.st.com (10.75.127.15) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-23_07:2020-04-22,2020-04-23 signatures=0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org When the remote wakeup interrupt is triggered, lx_state is resumed from L2 to L0 state. But when the gadget resume is called, lx_state is still L2. This prevents the resume callback to queue any request. Any attempt to queue a request from resume callback will result in: - "submit request only in active state" debug message to be issued - dwc2_hsotg_ep_queue() returns -EAGAIN Call the gadget resume routine after the core is in L0 state. Fixes: f81f46e1f530 ("usb: dwc2: implement hibernation during bus suspend/resume") Signed-off-by: Fabrice Gasnier Acked-by: Minas Harutyunyan --- Changes in v2: - Minor update to follow Minas suggestions --- drivers/usb/dwc2/core_intr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc2/core_intr.c b/drivers/usb/dwc2/core_intr.c index 876ff31..55f1d14 100644 --- a/drivers/usb/dwc2/core_intr.c +++ b/drivers/usb/dwc2/core_intr.c @@ -416,10 +416,13 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg) if (ret && (ret != -ENOTSUPP)) dev_err(hsotg->dev, "exit power_down failed\n"); + /* Change to L0 state */ + hsotg->lx_state = DWC2_L0; call_gadget(hsotg, resume); + } else { + /* Change to L0 state */ + hsotg->lx_state = DWC2_L0; } - /* Change to L0 state */ - hsotg->lx_state = DWC2_L0; } else { if (hsotg->params.power_down) return;