From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
To: Elson Serrao <quic_eserrao@quicinc.com>
Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"balbi@kernel.org" <balbi@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"quic_wcheng@quicinc.com" <quic_wcheng@quicinc.com>,
"quic_jackp@quicinc.com" <quic_jackp@quicinc.com>
Subject: Re: [PATCH v3 2/5] usb: dwc3: Add remote wakeup handling
Date: Wed, 8 Feb 2023 02:11:38 +0000 [thread overview]
Message-ID: <20230208021127.syauhdtpbyyncixr@synopsys.com> (raw)
In-Reply-To: <cd143a99-f781-fd32-cad2-3df8f8c0d617@quicinc.com>
On Tue, Feb 07, 2023, Elson Serrao wrote:
>
>
> On 2/7/2023 5:10 PM, Thinh Nguyen wrote:
> > On Tue, Feb 07, 2023, Elson Serrao wrote:
> > > On 2/6/2023 4:48 PM, Thinh Nguyen wrote:
> > > > > +static int __dwc3_gadget_wakeup(struct dwc3 *dwc, bool async)
> > > > > {
> > > > > int retries;
> > > > > @@ -2296,9 +2309,14 @@ static int __dwc3_gadget_wakeup(struct dwc3 *dwc)
> > > > > link_state = DWC3_DSTS_USBLNKST(reg);
> > > > > switch (link_state) {
> > > > > + case DWC3_LINK_STATE_U3: /* in HS, means SUSPEND */
> > > >
> > > > It's also possible to do remote wakeup in L1 for highspeed.
> > > >
> > >
> > > The rw_configured flag here is in context of triggering remote wakeup from
> > > bus suspend only.
> > >
> > > The remote wakeup setting for l1 in HighSpeed is controlled through LPM
> > > token and overrides/ignores the config desc bmAttributes wakeup bit.
> > >
> > > Section 4.1 of USB2_LinkPowerMangement_ECN[final] spec "The host system sets the Remote Wake Flag parameter in this request to
> > > enable or disable the addressed device
> > > for remote wake from L1. The value of this flag will temporarily (while in
> > > L1) override the current setting of the
> > > Remote Wake feature settable by the standard Set/ClearFeature() commands
> > > defined in Universal Serial Bus Specification, revision 2.0, Chapter 9."
> > >
> > > Please let me know if I am missing something.
> > >
> >
> > It overrides the setting of the SetFeature request, not the device
> > configuration.
> >
> > The rw_configured reflects the user configuration. Whether the host
> > tries to enable the remote wakeup through SetFeature request or LPM
> > token, the device should operate within the user configuration
> > limitation.
> >
> > If the configuration indicates that it doesn't support remote wakeup, we
> > should prevent unexpected behavior from the device. For simplicity, we
> > can just return failure to wakeup for all states.
> >
> > Thanks,
> > Thinh
>
> L1 entry/exit is HW controlled and the remote wakeup is conditional.(Section
> 7.1/Table7.2 of dwc3 data book). Even though we block it from
> SW the l1 exit will still happen from HW point of view.
>
> To correlate the user configuration with LPM token, I experimented by
> disabling the wakeup bit in the bmAtrributes, but I still see remote wakeup
> bit being set in the LPM token. From the observation it seems like there is
That's because the linux xhci driver enables remote wakeup bit in its
port without regard for the device configuration.
> no correlation between the wakeup bit in the bmAtrributes and the wakeup bit
> in the LPM token.
>
The host can bring the device out of L1, that's probably what you saw.
The controller doesn't initiate remote wakeup by itself.
Thanks,
Thinh
next prev parent reply other threads:[~2023-02-08 2:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-06 19:13 [PATCH v3 0/5] Add function suspend/resume and remote wakeup support Elson Roy Serrao
2023-02-06 19:13 ` [PATCH v3 1/5] usb: gadget: Properly configure the device for remote wakeup Elson Roy Serrao
2023-02-06 20:14 ` Alan Stern
2023-02-06 20:30 ` Elson Serrao
2023-02-07 0:24 ` Thinh Nguyen
2023-02-06 19:13 ` [PATCH v3 2/5] usb: dwc3: Add remote wakeup handling Elson Roy Serrao
2023-02-07 0:48 ` Thinh Nguyen
2023-02-07 22:41 ` Elson Serrao
2023-02-08 1:10 ` Thinh Nguyen
2023-02-08 1:51 ` Elson Serrao
2023-02-08 2:11 ` Thinh Nguyen [this message]
2023-02-10 1:36 ` Elson Serrao
2023-02-10 2:27 ` Thinh Nguyen
2023-02-10 3:43 ` Elson Serrao
2023-02-07 10:45 ` kernel test robot
2023-02-06 19:13 ` [PATCH v3 3/5] usb: gadget: Add function wakeup support Elson Roy Serrao
2023-02-07 1:14 ` Thinh Nguyen
2023-02-07 5:56 ` Greg KH
2023-02-06 19:13 ` [PATCH v3 4/5] usb: dwc3: Add function suspend and " Elson Roy Serrao
2023-02-06 19:13 ` [PATCH v3 5/5] usb: gadget: f_ecm: Add suspend/resume and remote " Elson Roy Serrao
2023-02-07 1:24 ` [PATCH v3 0/5] Add function " Thinh Nguyen
2023-02-07 2:14 ` Elson Serrao
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=20230208021127.syauhdtpbyyncixr@synopsys.com \
--to=thinh.nguyen@synopsys.com \
--cc=balbi@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=quic_eserrao@quicinc.com \
--cc=quic_jackp@quicinc.com \
--cc=quic_wcheng@quicinc.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