linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@kernel.org>
To: Jun Li <lijun.kernel@gmail.com>, John Stultz <john.stultz@linaro.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	Yu Chen <chenyu56@huawei.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	ShuFan Lee <shufan_lee@richtek.com>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Chunfeng Yun <chunfeng.yun@mediatek.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Valentin Schneider <valentin.schneider@arm.com>,
	Jack Pham <jackp@codeaurora.org>,
	Linux USB List <linux-usb@vger.kernel.org>,
	"open list\:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>
Subject: Re: [PATCH v4 3/9] usb: dwc3: Increase timeout for CmdAct cleared by device controller
Date: Fri, 08 May 2020 15:33:24 +0300	[thread overview]
Message-ID: <87h7wqmwrv.fsf@kernel.org> (raw)
In-Reply-To: <CAKgpwJVaKpsgMjKcnYyJsfNj0ibkPt=mdn-NxfOkeX1jfL=9iQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3160 bytes --]


Hi,

Jun Li <lijun.kernel@gmail.com> writes:
> John Stultz <john.stultz@linaro.org> 于2019年10月30日周三 上午5:18写道:
>>
>> On Tue, Oct 29, 2019 at 2:11 AM Felipe Balbi <balbi@kernel.org> wrote:
>> > John Stultz <john.stultz@linaro.org> writes:
>> > > From: Yu Chen <chenyu56@huawei.com>
>> > >
>> > > It needs more time for the device controller to clear the CmdAct of
>> > > DEPCMD on Hisilicon Kirin Soc.
>> >
>> > Why does it need more time? Why is it so that no other platform needs
>> > more time, only this one? And which command, specifically, causes
>> > problem?
>
> Sorry for my back to this so late.
>
> This change is required on my dwc3 based HW too, I gave a check
> and the reason is suspend_clk is used in case the PIPE phy is at P3,
> this slow clock makes my EP command below timeout.

The phy needs to woken up before the command is triggered. Currently we
only wake up the HS PHY. Does it help you if we wake up the SS phy as
well?

Something like below ought to do it:

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index a0555252dee0..ee46c2dacaeb 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -274,7 +274,8 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
 	const struct usb_endpoint_descriptor *desc = dep->endpoint.desc;
 	struct dwc3		*dwc = dep->dwc;
 	u32			timeout = 1000;
-	u32			saved_config = 0;
+	u32			saved_hs_config = 0;
+	u32			saved_ss_config = 0;
 	u32			reg;
 
 	int			cmd_status = 0;
@@ -293,19 +294,28 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
 	if (dwc->gadget.speed <= USB_SPEED_HIGH) {
 		reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0));
 		if (unlikely(reg & DWC3_GUSB2PHYCFG_SUSPHY)) {
-			saved_config |= DWC3_GUSB2PHYCFG_SUSPHY;
+			saved_hs_config |= DWC3_GUSB2PHYCFG_SUSPHY;
 			reg &= ~DWC3_GUSB2PHYCFG_SUSPHY;
 		}
 
 		if (reg & DWC3_GUSB2PHYCFG_ENBLSLPM) {
-			saved_config |= DWC3_GUSB2PHYCFG_ENBLSLPM;
+			saved_hs_config |= DWC3_GUSB2PHYCFG_ENBLSLPM;
 			reg &= ~DWC3_GUSB2PHYCFG_ENBLSLPM;
 		}
 
-		if (saved_config)
+		if (saved_hs_config)
 			dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg);
 	}
 
+	reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0));
+	if (unlikely(reg & DWC3_GUSB3PIPECTL_SUSPHY)) {
+		saved_ss_config |= DWC3_GUSB3PIPECTL_SUSPHY;
+		reg &= ~DWC3_GUSB3PIPECTL_SUSPHY;
+	}
+
+	if (saved_ss_config)
+		dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg);
+
 	if (DWC3_DEPCMD_CMD(cmd) == DWC3_DEPCMD_STARTTRANSFER) {
 		int		needs_wakeup;
 
@@ -397,12 +407,18 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
 			dwc3_gadget_ep_get_transfer_index(dep);
 	}
 
-	if (saved_config) {
+	if (saved_hs_config) {
 		reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0));
-		reg |= saved_config;
+		reg |= saved_hs_config;
 		dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg);
 	}
 
+	if (saved_ss_config) {
+		reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0));
+		reg |= saved_ss_config;
+		dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg);
+	}
+
 	return ret;
 }
 
-- 
balbi

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  parent reply	other threads:[~2020-05-08 12:33 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-28 21:59 [PATCH v4 0/9] Prereqs for HiKey960 USB support John Stultz
2019-10-28 21:59 ` [PATCH v4 1/9] dt-bindings: usb: rt1711h: Add connector bindings John Stultz
2019-10-28 21:59 ` [PATCH v4 2/9] usb: dwc3: Execute GCTL Core Soft Reset while switch modes John Stultz
2019-10-29  9:09   ` Felipe Balbi
2019-10-29 21:21     ` John Stultz
2019-10-28 21:59 ` [PATCH v4 3/9] usb: dwc3: Increase timeout for CmdAct cleared by device controller John Stultz
2019-10-29  9:11   ` Felipe Balbi
2019-10-29 21:17     ` John Stultz
2020-05-06  9:00       ` Jun Li
2020-05-06 22:27         ` John Stultz
2020-05-07  3:08           ` Jun Li
2020-05-08 12:22             ` Jun Li
2020-05-08 12:35               ` Felipe Balbi
2020-05-09  8:28                 ` Jun Li
2020-05-08 12:33         ` Felipe Balbi [this message]
2020-05-09  8:10           ` Jun Li
2020-05-15  9:31             ` Felipe Balbi
2020-05-15 10:07               ` Jun Li
2020-05-15 10:41                 ` Felipe Balbi
2020-05-16  0:25                 ` Thinh Nguyen
2020-05-16  7:12                   ` Felipe Balbi
2020-05-16  9:20                     ` Jun Li
2020-05-16 11:57                       ` Felipe Balbi
2020-05-19  2:24                         ` Jun Li
2020-05-19  6:28                           ` Thinh Nguyen
2020-05-19  6:46                             ` Thinh Nguyen
2020-05-19  7:39                               ` Jun Li
2020-05-21  1:07                                 ` Thinh Nguyen
2020-05-21  1:55                                   ` Thinh Nguyen
2020-05-21  6:20                                     ` Felipe Balbi
2020-05-21  6:22                                       ` Felipe Balbi
2020-05-21  7:47                                         ` Jun Li
2020-05-21  7:33                                     ` Jun Li
2019-10-28 21:59 ` [PATCH v4 4/9] dt-bindings: usb: dwc3: Allow clock list & resets to be more flexible John Stultz
2019-10-28 21:59 ` [PATCH v4 5/9] usb: dwc3: Rework clock initialization " John Stultz
2019-10-29  9:13   ` Felipe Balbi
2019-10-29 16:08     ` John Stultz
2019-10-30  9:02       ` Felipe Balbi
2019-11-07 21:53     ` Rob Herring
2019-10-28 21:59 ` [PATCH v4 6/9] usb: dwc3: Rework resets " John Stultz
2019-10-29  9:17   ` Felipe Balbi
2019-10-29 18:05     ` John Stultz
2019-10-30  9:01       ` Felipe Balbi
2019-11-07 21:45         ` Rob Herring
2019-10-28 21:59 ` [PATCH v4 7/9] usb: dwc3: Registering a role switch in the DRD code John Stultz
2019-10-29  9:21   ` Felipe Balbi
2019-11-07 23:20     ` John Stultz
2019-10-28 21:59 ` [PATCH v4 8/9] dt-bindings: usb: generic: Add role-switch-default-host binding John Stultz
2019-10-29  9:23   ` Felipe Balbi
2019-10-29 18:26     ` John Stultz
2019-10-28 21:59 ` [PATCH v4 9/9] usb: dwc3: Add host-mode as default support John Stultz
2019-10-29  9:25   ` Felipe Balbi
2019-11-07 22:23     ` John Stultz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87h7wqmwrv.fsf@kernel.org \
    --to=balbi@kernel.org \
    --cc=andy.shevchenko@gmail.com \
    --cc=chenyu56@huawei.com \
    --cc=chunfeng.yun@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jackp@codeaurora.org \
    --cc=john.stultz@linaro.org \
    --cc=lijun.kernel@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=shufan_lee@richtek.com \
    --cc=suzuki.poulose@arm.com \
    --cc=valentin.schneider@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).