All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Kaehlcke <mka@chromium.org>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: USB mailing list <linux-usb@vger.kernel.org>
Subject: Re: [v15 3/6] usb: dwc3: core: Host wake up support from system suspend
Date: Fri, 6 May 2022 11:46:06 -0700	[thread overview]
Message-ID: <YnVs7kSkpjUBWc5w@google.com> (raw)
In-Reply-To: <YnVmXmG+6emL4nxv@rowland.harvard.edu>

On Fri, May 06, 2022 at 02:18:06PM -0400, Alan Stern wrote:
> [CC: list drastically reduced]
> 
> On Fri, May 06, 2022 at 09:51:46AM -0700, Matthias Kaehlcke wrote:
> > I found this, as I commented on the other thread:
> > 
> >   commit c4a5153e87fdf6805f63ff57556260e2554155a5
> >   Author: Manu Gautam <mgautam@codeaurora.org>
> >   Date:   Thu Jan 18 16:54:30 2018 +0530
> > 
> >   usb: dwc3: core: Power-off core/PHYs on system_suspend in host mode
> > 
> >   Commit 689bf72c6e0d ("usb: dwc3: Don't reinitialize core during
> >   host bus-suspend/resume") updated suspend/resume routines to not
> >   power_off and reinit PHYs/core for host mode.
> >   It broke platforms that rely on DWC3 core to power_off PHYs to
> >   enter low power state on system suspend.
> > 
> >   Perform dwc3_core_exit/init only during host mode system_suspend/
> >   resume to addresses power regression from above mentioned patch
> >   and also allow USB session to stay connected across
> >   runtime_suspend/resume in host mode. While at it also replace
> >   existing checks for HOST only dr_mode with current_dr_role to
> >   have similar core driver behavior for both Host-only and DRD+Host
> >   configurations.
> > 
> >   Fixes: 689bf72c6e0d ("usb: dwc3: Don't reinitialize core during host bus-suspend/resume")
> >   Reviewed-by: Roger Quadros <rogerq@ti.com>
> >   Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
> >   Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
> > 
> > 
> > So apparently powering off the core and PHYs is needed on some
> > platforms.
> > 
> > Let's move forward with the core/PHYs off for now and try to
> > come up with a solution (e.g. a DT property that indicates
> > that the core/PHYs can remain powererd) in a separate
> > patch/series.
> 
> Isn't it true that if you power off the PHY, the controller will be 
> unable to detect resume requests from attached devices? Similarly, won't 
> the controller will be unable to detect plug and unplug events on the 
> root hub?
> 
> Doesn't this mean that if wakeup is enabled on the root hub or any of 
> the devices downstream from a root-hub port, the port's PHY must remain 
> powered during suspend?

Yes.

Currently the core/PHYs are always powered off during suspend in host mode:

static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
{
	...

	switch (dwc->current_dr_role) {
	case DWC3_GCTL_PRTCAP_HOST:
		if (!PMSG_IS_AUTO(msg)) {
			dwc3_core_exit(dwc);
			break;
		}

	...
}

With that I would expect wakeup to be broken for all dwc3. I'm a bit confused
though, since dwc3-imx8mp.c seems to support wakeup and the driver landed
after the above patch ...

This series intends to change the above code to something like this:

	if (!PMSG_IS_AUTO(msg)) {
	       if (device_may_wakeup(dwc->dev) &&
	                       device_wakeup_path(dwc->dev)) {
	               dwc->phy_power_off = false;
	       } else {
	               dwc->phy_power_off = true;
	               dwc3_core_exit(dwc);
	       }
	}

i.e. the core/PHYs would only be powered down if wakeup is disabled or no
wakeup capable devices are connected. With that plug/unplug events still
wouldn't be detected.

  reply	other threads:[~2022-05-06 18:46 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-05  8:56 [v15 0/6] USB DWC3 host wake up support from system suspend Krishna Kurapati
2022-05-05  8:56 ` [v15 1/6] dt-bindings: usb: dwc3: Add wakeup-source property support Krishna Kurapati
2022-05-05  8:56 ` [v15 2/6] usb: host: xhci-plat: Enable wakeup based on children wakeup status Krishna Kurapati
2022-05-06 15:36   ` Matthias Kaehlcke
2022-05-09  3:38     ` Pavan Kondeti
2022-05-11  1:51       ` Pavan Kondeti
2022-05-11 15:54         ` Matthias Kaehlcke
2022-05-11 23:54           ` Pavan Kondeti
2022-05-05  8:56 ` [v15 3/6] usb: dwc3: core: Host wake up support from system suspend Krishna Kurapati
2022-05-05 22:48   ` Matthias Kaehlcke
2022-05-06  5:11     ` Krishna Kurapati PSSNV
2022-05-06  5:14       ` Pavan Kondeti
2022-05-06 15:51         ` Matthias Kaehlcke
2022-05-06 16:51           ` Matthias Kaehlcke
2022-05-06 18:18             ` Alan Stern
2022-05-06 18:46               ` Matthias Kaehlcke [this message]
2022-05-06 20:30                 ` Alan Stern
2022-05-09  3:32                   ` Pavan Kondeti
2022-05-09 14:08                     ` Alan Stern
2022-05-09 14:23                       ` Pavan Kondeti
2022-05-09 14:27                         ` Pavan Kondeti
2022-05-09 14:33                         ` Alan Stern
2022-05-10  1:16                           ` Pavan Kondeti
2022-05-10  1:30                             ` Pavan Kondeti
2022-05-10 15:24                               ` Alan Stern
2022-05-10 15:22                             ` Alan Stern
2022-05-11  1:46                               ` Pavan Kondeti
2022-05-05  8:56 ` [v15 4/6] usb: dwc3: qcom: Add helper functions to enable,disable wake irqs Krishna Kurapati
2022-05-05  8:56 ` [v15 5/6] usb: dwc3: qcom: Configure wakeup interrupts during suspend Krishna Kurapati
2025-05-16 11:31   ` Konrad Dybcio
2022-05-05  8:56 ` [v15 6/6] usb: dwc3: qcom: Keep power domain on to retain controller status Krishna Kurapati

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=YnVs7kSkpjUBWc5w@google.com \
    --to=mka@chromium.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.