Re: [PATCH v2 3/5] Documentation: dt-bindings: Add snps,need-phy-for-wake for dwc2 USB

From: Doug Anderson
Date: Tue Apr 30 2019 - 01:33:49 EST


Hi,

On Mon, Apr 29, 2019 at 6:23 PM Rob Herring <robh@xxxxxxxxxx> wrote:
>
> On Wed, Apr 17, 2019 at 05:13:54PM -0700, Douglas Anderson wrote:
> > Some SoCs with a dwc2 USB controller may need to keep the PHY on to
> > support remote wakeup. Allow specifying this as a device tree
> > property.
> >
> > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> > ---
> > For relevant prior discussion on this patch, see:
> >
> > https://lkml.kernel.org/r/1435017144-2971-3-git-send-email-dianders@xxxxxxxxxxxx
> >
> > I didn't make any changes from the prior version since I never found
> > out what Rob thought of my previous arguments. If folks want a
> > change, perhaps they could choose from these options:
> >
> > 1. Assume that all dwc2 hosts would like to keep their PHY on for
> > suspend if there's a USB wakeup enabled, thus we totally drop this
> > binding. This doesn't seem super great to me since I'd bet that
> > many devices that use dwc2 weren't designed for USB wakeup (they
> > may not keep enough clocks or rails on) so we might be wasting
> > power for nothing.
>
> 1b. Use SoC specific compatible strings to enable/disable remote
> wake-up. We can debate what the default is I guess.

Unfortunately it's more than just SoC. While you need the SoC to be
able to support this type of wakeup, you also need the board design,
firmware design, regulator design, etc. ...so I don't think we can
just use the SoC specific compatible string.

In fact, while testing this I found that USB wakeup was totally broken
unless I enabled "deep suspend" mode on my system. Something about
the clocks / wakeup sources in the shallow suspend totally blocked it
and I couldn't figure out what.

...so I believe it really needs to be something where someone has
said: I tested it out on this board and everything is setup properly
to support USB wakeup.


> > 2. Rename this property to "snps,wakeup-from-suspend-with-phy" to make
> > it more obvious that this property is intended both to document
> > that wakeup from suspend is possible and that we need the PHY for
> > said wakeup.
> > 3. Rename this property to "snps,can-wakeup-from-suspend" and assume
> > it's implicit that if we can wakeup from suspend that we need to
> > keep the PHY on. If/when someone shows that a device exists using
> > dwc2 where we can wakeup from suspend without the PHY they can add
> > a new property.
> >
> > Changes in v2: None
> >
> > Documentation/devicetree/bindings/usb/dwc2.txt | 3 +++
> > 1 file changed, 3 insertions(+)